【问题标题】:C++: making a single file without includesC ++:制作没有包含的单个文件
【发布时间】:2016-04-19 06:44:02
【问题描述】:

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

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

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

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

【问题讨论】:

  • 查阅编译器的参考手册。大多数编译器允许您将预处理后的输出写入磁盘。

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


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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 2014-03-26
    • 1970-01-01
    • 2012-11-18
    • 2021-05-25
    相关资源
    最近更新 更多