使用 C++ 预处理器指令,是否可以测试预处理器符号是否已定义但没有值?像这样的东西:
#define MYVARIABLE
#if !defined(MYVARIABLE) || #MYVARIABLE == ""
... blablabla ...
#endif
EDIT:我这样做的原因是因为我正在从事的项目应该从环境中获取字符串/DMYSTR=$(MYENVSTR)
,并且该字符串可能为空。我想确保如果用户忘记定义此字符串,项目将无法编译。
索玛宏魔法:
#define DO_EXPAND(VAL) VAL ## 1
#define EXPAND(VAL) DO_EXPAND(VAL)
#if !defined(MYVARIABLE) || (EXPAND(MYVARIABLE) == 1)
Only here if MYVARIABLE is not defined
OR MYVARIABLE is the empty string
#endif
请注意,如果您在命令行上定义 MYVARIABLE,则默认值为 1:
g++ -DMYVARIABLE <file>
这里 MYVARIABLE 的值是空字符串:
g++ -DMYVARIABLE= <file>
引用问题已解决:
#define DO_QUOTE(X) #X
#define QUOTE(X) DO_QUOTE(X)
#define MY_QUOTED_VAR QUOTE(MYVARIABLE)
std::string x = MY_QUOTED_VAR;
std::string p = QUOTE(MYVARIABLE);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)