2012-08-14 169 views
4

我們如何檢查是否定義了宏,以及是否定義了宏定義的值? 我試過做gdb,但是我們看不到GDB中的宏,因爲MACRO在預編譯時被替換。檢查是否定義宏

GCC編譯器有什麼方法可以看到編譯器在創建目標文件(* .o)之前創建的預編譯文件嗎?

回答

7

您可以使用gcc的-E標誌來獲得預處理輸出。此輸出將包含擴展的宏而不是其名稱。你可以找到more information here

4

在C源文件中,您可以使用#ifdef宏來檢查宏是否已定義。

#include <stdio.h> 

#ifdef MY_MACRO 
char msg[] = "My macro is defined"; 
#else 
char msg[] = "My macro is NOT defined"; 
#endif 

int main(int argc, char **argv) { 
    printf("%s\n", msg); 

    return 0; 
}