1. 程式人生 > >C/C++巨集除錯

C/C++巨集除錯

除錯檔案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);