我知道我已经有一个类似的帖子(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/