2017-10-10 72 views
0

例如,如果一个“设置”文件存在,并且有以下几点:如何使#if预处理器以另一个不同文件中的值为条件?

system,ubuntu

能预处理器#if被用于定制的设置文件依据的值的代码?例如:

#if lookup_system == "ubuntu" // loopup_system is pseudocode

另一用途可能是查找代码是否已在生产服务器上运行。

+2

这只有在构建系统解析“settings”文件时才有可能,构建系统在构建时添加了正确的宏。请记住,预处理器只是一个*编译时*的事情。 –

回答

0

你不能那样做。

但是,您可能会从从外部数据生成一些头文件autoconf实用程序会这样做(实际上会生成一些生成此类标头的configure脚本)。

更一般地,你应该建立你的build automation系统(例如编辑MakefileGNU make,或者您build.ninjaninja)生成的头文件合适(也许一个很小的脚本,自己的C++程序-another-,或随你)。你也可以有一个聪明的编译系统将特定的-D flags传递给你的编译器。

记住C++文件(包括头文件如.hh和实现文件例如.cc ...)可以通过别的来产生。这是常见的做法。

了解更多关于您的preprocessor,例如约cpp。这是一个只编译的东西。使用GCC,您可以使用命令such as
g++ -C -E foo.cc > foo.ii获取foo.cc文件的预处理表单foo.ii

相关问题