例如,如果"设置"文件存在并具有以下内容:
system,ubuntu
是否可以使用预处理器#if
根据设置文件中的值自定义代码?例如:
#if lookup_system == "ubuntu" // loopup_system is pseudocode
另一种用途可能是查询代码是否在生产服务器上运行。
答案 0 :(得分:0)
你做不到。
但是,您可能从外部数据生成一些头文件。 autoconf实用程序执行此操作(实际生成一些生成此标头的configure
脚本。)
更一般地说,您应该设置build automation系统(例如,为GNU make编辑Makefile
,或为ninja编辑build.ninja
)以生成该系统头文件适当(可能是一个小脚本,你自己的C ++ - 另一个程序,或其他)。您还可以拥有一个聪明的构建系统,将特定的-D
flags传递给您的编译器。
请记住 C ++文件(两个标题文件,例如.hh
和实施文件,例如.cc
...)可以通过其他内容生成 。这是常见的做法。
详细了解您的preprocessor,例如关于cpp
。这是一个只编译的东西。使用GCC,您可以使用such as foo.ii
命令获取foo.cc
文件的预处理表单g++ -C -E foo.cc > foo.ii
。