[英]debug error in visual studio
有人可以解釋一下我在這里做錯了什么,我收到一個錯誤意外的文件結束和缺少功能標題,提前謝謝
static char debug[256];
#define DBGPRINT(...) {sprintf_s(debug, 256, __VA_ARGS__); OutputDebugStringA(debug);}
#define CHECK_READ(status, str) while(0){ \
if(0 == status){ \
DBGPRINT("Message %s\n", str); \
return 0; \
} \
}
int main(){
char* str = "hello world";
status = 0;
CHECK_READ(status, str);
return 0;
}
錯誤:
Error line 7 error C2447: '{' : missing function header (old-style formal list?)
Error line 11 error C2447: '{' : missing function header (old-style formal list?)
Error line 15 error C2017: illegal escape sequence
Error line 19 fatal error C1004: unexpected end-of-file found
在宏定義結束時你有一個額外的\\
。 所以你的int main(){
line實際上是宏CHECK_READ
的一部分:)
編輯:
沒有尾隨\\
的變體在ideone上編譯得很好: http ://ideone.com/pddx0。 我聲明了status
,因為它沒有在你的代碼中聲明。 (我注釋掉了OutputDebugStringA
並用snprintf
替換了sprintf_s
,因為它們都是特定於Microsoft的,不能在gcc上編譯。)
好的,這是真正的答案。
我從上面的代碼中復制並粘貼,並且在一個宏定義行上有尾隨空格
if(0 == status){ \ WHITESPACE HERE
對於作為行連續字符操作的黑色長度,它必須是該行的最后一個字符,之后沒有空格。 現在誰知道這是否是你的實際問題,但是對於空白,我得到了和你一樣的錯誤,如果沒有它,我就沒有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.