C ++:制作一个没有包含

时间:2016-01-14 03:21:13

标签: c++ include c-preprocessor single-file

这可能听起来像一个非常奇怪的问题,但我确实需要这个:我有一堆c ++头文件(来自一些只有头的库)和一个cpp文件。我想做的是生成一个没有包含任何内容的单个cpp文件。

为什么呢?对于比赛,编译器中没有我正在使用的库,而且只能提交一个cpp文件。

理想情况下,这个“脚本”会创建一个仅使用实际需要的文件,而不仅仅是复制和粘贴所有“#includes”。

我确信在代码中添加“#include”时,预处理器会生成一些文件。那么,我怎样才能看到这些中间文件(可能很长)?

1 个答案:

答案 0 :(得分:6)

  • GCC 提供-E选项,因此在预处理文件后会停止。 documentation有更多选项可以应用于预处理器。

  • clang 也接受-E,如here所述。

  • Visual Studio 提供/P (Preprocess to a File)编译器开关。它指示编译器:

      

    预处理[es] C和C ++源文件,并将预处理的输出写入文件。

    输出将写入文件名,文件名基于源文件,扩展名为.i。要指定其他文件名,请使用/Fi (Preprocess Output File Name)编译器开关。

  • 英特尔C ++编译器将在预处理后停止,如果您通过-E选项(输出到stdout)或-P(输出到文件)。在Windows上,这些将分别是/E/P开关。 manual有更多相关信息。