GCC - 在预处理期间显示预处理值

时间:2015-02-12 16:51:27

标签: gcc preprocessor-directive

有没有办法让GCC在预处理期间显示某些预处理值的值?特别是,如果我运行相当于:

gcc input.c -E >/dev/null

有没有办法获得扩展宏的实际值?考虑这个例子:

#if defined(A)
#define B bar
#else
#define B foo
#endif

#define XSTR(x) STR(x)
#define STR(x) #x

int main() {
#pragma message "B is " XSTR(B)
#error DIE
  B a = 2;
  return 0;
}

我想在这种情况下找出B is foo

在我的实际设置中,我无法访问完全预处理的文件,我无法删除-E标记。

基本原理:我有一个复杂的文件设置,由于错误定义的宏而导致语法错误很多,调试它的最快方法是使用这个#pragma/#error组合找出实际值,停止编译,手动修复它,然后再次运行GCC以找出下一个错误发生的位置。

0 个答案:

没有答案