C++:制作一个没有包含的文件

C++: making a single file without includes

本文关键字:一个 包含 文件 C++      更新时间:2023-10-16

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

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

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

我敢肯定,当您在代码中添加"#include"时,预处理器会生成一些文件。那么,我如何查看这些中间文件和(可能很长)文件?

  • GCC 提供了-E选项,因此它在预处理文件后停止。该文档包含更多可应用于预处理器的选项。

  • Clang也接受-E,如这里所述。

  • Visual Studio 提供/P(预处理到文件)编译器开关。它指示编译器:

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

    输出将写入文件名基于扩展名为 .i 的源文件的文件。若要指定其他文件名,请使用/Fi(预处理输出文件名)编译器开关。

  • 如果您传递-E选项(输出到stdout)或-P(输出到文件),英特尔C++编译器将在预处理后停止。在Windows上,这些将分别是/E/P开关。该手册对此提供了更多信息。