C/C++巨集除錯
阿新 • • 發佈:2018-12-10
除錯檔案test.c,程式碼如下:
#include <stdlib.h>
#include <stdio.h>
#define MACRO1(x) (++(x))
#define MACRO2(x) (MACRO1(x)+100)
#define MACRO3(x) (MACRO2(x)+200)
int main(void)
{
int a = 0;
int b = 0;
b = MACRO3(a);
printf("%d\n", b);
return 0;
}
方法1、巨集在預處理過程被展開,執行預處理,生產展開後的檔案
gcc -E test.c > pre.txt
方法2、巨集在預處理過程被展開,執行預處理,生產展開後的檔案
gcc -g3 test.c
使用gdb除錯,然後使用命令:macro expand MACRO3(5)
顯示:expands to: (((++(5))+100)+200)
方法3、將巨集作為字串打印出來
#define macro_to_str1(x) #x
#define macro_to_str(x) macro_to_str1(x)
....
const char* str=macro_to_str(AnyMacro);
printf("%s",str);