我正在測試相同代碼的兩個版本(在Linux上GCC版本4.9.2,沒有參數)。GCC在#define中需要下劃線?
兩者都有#define
指令,後面跟着一對#ifdef
/#endif
對。
現在,事實證明,只有當初始#define
之後的標籤以下劃線開頭時,組合才能正常工作。如果沒有下劃線,它會以非常奇怪的方式運作......只有每三次。
換句話說,這個工程
#define _whatever
雖然這並不:
#define whatever
即使我知道如何使該指令工作,只是好奇 - 這是否行爲遵循任何標準?
編輯: 下面的請求,這裏有兩個絕對真實的例子。 這一個打印行「預處理器的工作原理」:
#define _whatever
#include <stdio.h>
void main()
{
#ifdef _whatever
printf("Preprocessor works \n");
#endif
}
...這一個不輸出任何東西:
#define whatever
#include <stdio.h>
void main()
{
#ifdef whatever
printf("Preprocessor works \n");
#endif
}
是的,我甚至用的是「什麼」的字面 - 我不認爲,它是在其他地方定義的。但是,再次,這是使標籤有效的下劃線。
您不顯示工作或停止工作的代碼部分是什麼。 –
請提供[mcve]。 – user694733
好吧,真實的例子: – vanhemt