【问题标题】:Is there a way to include a header in every compilation unit without modifying every source file?有没有办法在每个编译单元中包含一个头文件而不修改每个源文件?
【发布时间】:2023-03-11 04:57:02
【问题描述】:

鉴于以下情况:

  • 包含数千个 C++ 源文件的大型项目
  • 没有通用头文件(没有一个头文件包含在每个源文件中)
  • 上述项目用g++编译,make管理

有没有什么方法可以在每个编译单元中包含一个定义(例如宏)而不需要修改每个源文件以包含一个新的头文件?

【问题讨论】:

    标签: c++ gcc g++ include


    【解决方案1】:

    您可以使用“-D”gcc 命令行选项来执行此操作。

    示例:gcc -ansi -Wall -Dblah='mymacrohere()' blah.cpp

    另请参阅:GCC Manual, Command Line options, Preprocessor options

    【讨论】:

      【解决方案2】:

      来自 man gcc:

      -包含文件

      处理文件好像“#include”file“”作为第一行出现 主要源文件。但是,搜索的第一个目录 file 是预处理器的工作目录而不是目录 包含主要源文件。如果在那里找不到,那就是 在 "#include "..."" 搜索链的其余部分中搜索 像平常一样。 如果给出了多个 -include 选项,则文件包含在 它们在命令行中出现的顺序。

      【讨论】:

      • 完美!我显然只是在阅读不包含完整文档的“man g++”。
      猜你喜欢
      • 2012-04-14
      • 1970-01-01
      • 2018-06-24
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2014-12-26
      相关资源
      最近更新 更多