在取消定义宏函数之前使用/复制宏变量的值:是否可能?

时间:2016-03-14 10:45:03

标签: c++ c cmake macros

如果我有:

#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

1 个答案:

答案 0 :(得分:3)

没有

宏不是类,没有那种复杂程度。

如果一个宏是根据另一个宏定义的,那么两个宏必须保持存在才能使替换正常工作。