如果我有:
#define A 1
#define B() A
#undef A
此代码:
#if B()
std::cout << "B" << std::endl;
#else
std::cout << "not B" << std::endl;
#endif
将打印&#34;而不是B&#34;。有没有办法将A分配给另一个宏变量/函数然后消灭A?
背景:在this的上下文中使用cmake's configure_file,其中A
定义为#cmakedefine01
。
答案 0 :(得分:3)
没有
宏不是类,没有那种复杂程度。
如果一个宏是根据另一个宏定义的,那么两个宏必须保持存在才能使替换正常工作。