我知道我已经有一个类似的帖子(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定义的基础上定义了MODULE

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

最佳答案

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

关于c - 在 token 粘贴的宏上使用#ifdef?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56777907/

10-15 00:17