首页 > 解决方案 > 在标记粘贴的宏上使用#ifdef?

问题描述

我知道已经有一篇与我类似的帖子(C++ `ifdef` with concatenation of macros values)但帖子很旧,提供的解决方案对我不起作用,因为我无法设置我想要检查的定义。所以我希望有人能帮助我。

问题是我想用一个固定的文本来连接两个 a 的 ifdef。

想象下面的代码

#define ENABLE_MODULE_1

enum Modultype
{
    MODULE_1,
    MODULE_2
};

#define MODULE MODULE_1


int main()
{
    #ifdef ENABLE_ ## MODULE
    printf("NAME defined");
    #else
    printf("NAME not defined");
    #endif
    return 0;
}

所以我基本上想检查是否ENABLE_MODULE_1是基于MODULEdefine定义的。

我希望有一个人可以帮助我。谢谢!

标签: cc-preprocessor

解决方案


这是不可能的。预处理器宏仅扩展一次,并且仅在不在另一个预处理器语句中时扩展。除此之外,连接只能在#define语句中使用。


推荐阅读