有没有办法在每个编译单元中包含一个头而不修改每个源文件?

时间:2009-02-20 22:57:07

标签: c++ gcc g++ include

鉴于以下内容:

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

有没有办法在不修改每个源文件的情况下将定义(例如宏)包含到每个编译单元中以包含新的头文件?

2 个答案:

答案 0 :(得分:15)

来自man gcc:

  

-include file

     

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

答案 1 :(得分:9)

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

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

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