C++:制作不包含的单个文件

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

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

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

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

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

最佳答案

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

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

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

    Preprocess[es] C and C++ source files and write[s] the preprocessed output to a file.

    输出被写入一个文件,该文件的文件名基于带有 .i 扩展名的源文件。要指定不同的文件名,请使用 /Fi (Preprocess Output File Name)编译器开关。

  • 如果您传递 -E 选项(输出到 stdout)或 -P(输出到文件)。在 Windows 上,它们分别是 /E/P 开关。 manual有这方面的更多信息。

关于C++:制作不包含的单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34781144/

相关文章:

c++ - while 循环是如何工作的?

c++ - boost::property_tree::ptree 线程安全吗?

来自多个位置的 C 包含文件

c++ - C++的STL priority_queue with struct

c++ - Markov C++ 读取文件性能

c++ - 已在 .obj 中定义 - 没有双重包含

c++ - 在我的类头文件中的预编译头文件中包含头文件并在其外部包含头文件

c++ - 预处理器指令在 for 循环中不起作用

c++ - 在 C 和 C++ 中解析 typedef

c - #在C中定义一个输入数字