关于c预处理器:如何让’gcc -E’停在#error上

How to make 'gcc -E' stop on #error

有没有办法让GCC的预处理器在找到#error时停止,当用选项-E运行它时?

例如,在以下程序中:

1
2
3
4
#error STOP HERE
int main() {
  return 0;
}

在此程序上运行gcc会导致第1行的编译中断,但运行gcc -E会输出相同的行,然后继续进行预处理。

注意:我的问题类似于GCC #pragma来停止编译,但是关于-E标志,那么两者是否应该合并?


最简洁的答案是不。 处理器指令(例如#error)用于向编译器发出命令。 通过使用-E选项,编译器永远不会运行,因此它没有理由停止。 -E标志用于打印所有使用您的程序编译而无需实际编译的代码。