鉴于以下情况:
- 包含数千个 C++ 源文件的大型项目
- 没有通用头文件(没有一个头文件包含在每个源文件中)
- 所述项目是用 g++ 编译并由 make 管理的
有没有办法在每个编译单元中包含一个定义(例如宏)而不修改每个源文件以包含一个新的头文件?
来自 man gcc:
-包含文件
处理文件,好像“#include”file“”作为主要源文件的第一行出现。但是,搜索文件的第一个目录是预处理器的工作目录,而不是包含主源文件的目录。如果在此处未找到,则正常在“#include”...“”搜索链的其余部分中进行搜索。如果给出了多个 -include 选项,则文件将按照它们在命令行中出现的顺序被包含在内。
您可以使用“-D”gcc 命令行选项来执行此操作。
例子:gcc -ansi -Wall -Dblah='mymacrohere()' blah.cpp
另请参阅:GCC 手册、命令行选项、预处理器选项