预处理器是否有直接作为定义访问环境变量的机制,而无需在命令行上定义它们?
例如,
SOME_VAR=foo gcc code.c
和
#if ENV_SOME_VAR == "foo"
#define SOME_VAR_IS_FOO
#endif
答案 0 :(得分:1)
不,标准C预处理器没有这样的机制,我也不知道有任何编译器扩展提供这样的功能。
但是,您可以使用构建系统来完成此操作,例如Cmake或GNU Autoconf,后者是GNU Autotools构建系统的一部分。一个简单的shell脚本也会这样做,尽管所有这些选项意味着您需要测试环境变量以确定是否定义ENV_SOME_VAR
,在这种情况下,您可能只是使用类似的东西来定义它以下内容:
-DENV_SOME_VAR="${SOME_VAR:-unfoo}"
这会在您的C文件中将ENV_SOME_VAR
定义为$SOME_VAR
的值(如果已设置)或字符串" unfoo"如果$SOME_VAR
为空(null)或未设置。