如何使预处理器 #if 以另一个不同文件中的值为条件
How to make #if preprocessor be conditional upon a values in another different file?
例如,如果存在"settings"文件并且具有以下内容:
system,ubuntu
是否可以使用预处理器#if
根据设置文件中的值自定义代码?例如:
#if lookup_system == "ubuntu" // loopup_system is pseudocode
另一个用途可能是查找代码是否在生产服务器上运行。
你不能那样做。
但是,您可能会从外部数据生成一些头文件。autoconf 实用程序就是这样做的(实际上生成一些生成此类标头configure
脚本)。
更一般地说,你应该设置你的构建自动化系统(例如,编辑你的 GNU make Makefile
,或者你的 ninja build.ninja
)来适当地生成该头文件(也许使用一个小脚本、你自己的C++-另一个-程序,或者其他什么)。您还可以让一个聪明的构建系统将特定的-D
标志传递给编译器。
请记住,C++文件(两个头文件,例如 .hh
和实施文件,例如 .cc
...可以由其他东西生成。这是常见的做法。
阅读有关预处理器的更多信息,例如关于cpp
。这是一个编译的唯一东西。使用 GCC,您可以使用 g++ -C -E foo.cc > foo.ii
等
命令获取foo.cc
文件的预处理表单foo.ii
。
相关文章:
- 根据特定条件从文件中检索每个令牌
- 为什么我可以将 ifstream 文件置于 if 条件?
- GDB / C++ - 根据循环条件将多个变量记录到输出文件中
- 使用文件锁定的进程之间的条件变量
- C++,使用自己的条件搜索文件中的字符串
- 计算文本文件中行数的最佳条件是什么
- 使用多个.cpp文件,可以替代C 中的条件汇编
- 有条件地将文件包含在C++标头中
- 如何使预处理器 #if 以另一个不同文件中的值为条件
- 从文件中逐行读取条件
- QT Pro文件条件液体
- 即使不满足条件,也会重置文本文件.(C++)
- 有条件地将文件添加到项目中C++库中
- 生成文件中的条件变量
- 如何在Visual C++中有条件地包含一个不存在的文件
- 有条件地提示安装文件夹对话框
- 我应该使用什么条件来停止文件读取循环
- #if 条件区域是否可以跨越包含文件边界
- 系统头文件中的条件编译
- 希望使用 C++ 有条件地连接文本文件中的字符串