哪个-x用于通过GCC进行预处理?

时间:2015-05-05 12:18:29

标签: gcc c-preprocessor

我需要使用GCC(在我的情况下为4.8.1)在包含预处理程序指令的文件上运行预处理程序,而不是(必然)C / C ++代码。这些指令可能依赖于GCC的预定义宏,因此我必须通过GCC而不是直接调用预处理器。我知道我可以通过使用GCC的选项-E来做到这一点。

该文件可以具有任意扩展名,因此我需要通过-x命令行选项指定其类型。我查看了GCC文档并找到了这个选项的四个值,这在我的情况下是有意义的:

c
c-header
c++
c++-header

除了名字外,文档提供的信息很少。所以我的问题是:它们之间有什么区别?它们是否仅仅用于运行预处理器的目的,还是我应该警惕的东西?

1 个答案:

答案 0 :(得分:1)

-header变体用于预编译标头(" PCH")功能。与-E一起使用PCH并不合理,所以你应该忽略它们。

-x c-x c++的选择决定了预处理器的一些功能--C和C ++在这里并不相同。您还可以使用-std=...来影响预处理器功能。

您还可以将预处理器与-traditional放在旧的K& R兼容模式中(您可能需要-Wp,-traditional,我忘了)。这有时在预处理非源文件时使用,但并非总是如此。此模式会影响很多内容,有关详细信息,请参阅手册。