3

鉴于以下情况:

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

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

4

2 回答 2

15

来自 man gcc:

-包含文件

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

于 2009-02-20T23:02:58.517 回答
9

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

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

另请参阅:GCC 手册、命令行选项、预处理器选项

于 2009-02-20T23:02:41.310 回答