如何使预处理器 #if 以另一个不同文件中的值为条件

How to make #if preprocessor be conditional upon a values in another different file?

本文关键字:文件 条件 处理器 何使预 #if 另一个      更新时间:2023-10-16

例如,如果存在"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