【发布时间】:2020-02-20 21:34:23
【问题描述】:
void testFunc();
int myval = 0;
int main()
{
int a = 1;
if (a > 0)
{
#define TEST1
testFunc();
#undef TEST1
}
int b = 2;
if ( b > 0)
{
#define TEST2
testFunc();
#undef TEST2
}
std::cout << "val : " << myval << endl;
getchar();
return 0;
}
void testFunc()
{
#ifdef TEST1
#define HERE 1
#endif
#ifdef TEST2
#define HERE 2
#endif
#ifdef HERE
myval = HERE;
#else
myval = -1;
#endif
}
如何在第一次调用 testFunc() 时将 HERE 的值打印为 1,然后在第二次调用时将 HERE 的值打印为 2。
使用我拥有的当前代码,正在打印的值是 -1。
【问题讨论】:
-
你为什么要为此使用预处理器?看起来你有 XY 问题,你最好描述一下你想要实现的目标
-
这可能比
goto意大利面条逻辑更糟糕。 -
我认为 OP 只是想了解预处理器宏,而不是试图解决实际问题。
标签: c++ macros preprocessor