我有一个相当长的预处理器定义列表,我想将它们提供给几个用 gcc 编译的 C 程序。
基本上我可以创建一个巨大的列表 -DDEF1=1 -DDEF2=2 ... 传递给 gcc 的选项,但这会造成巨大的混乱,很难在版本控制系统中使用,并且可能在未来的某个时候打破命令行长度限制。
我想在文件中定义我的定义。
基本上 -imacros 会做我想要的,除了它只将它传递给第一个源文件:(下面来自 gcc 文档):
-include file 处理文件,好像#include "file" 出现在主要源文件的第一行。但是,搜索文件的第一个目录是预处理器的工作目录,而不是包含主源文件的目录。如果在此处未找到,则会在 #include "..." 搜索链的其余部分中正常进行搜索。如果给出了多个 -include 选项,则文件将按照它们在命令行中出现的顺序被包含在内。
-imacros 文件 与 -include 完全一样,只是扫描文件产生的任何输出都会被丢弃。它定义的宏保持定义。这允许您从标头获取所有宏,而无需处理其声明。-imacros 指定的所有文件都在 -include 指定的所有文件之前处理。
我需要在所有源文件中都有定义,而不仅仅是第一个。