c - 在标记粘贴的宏上使用#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
是基于MODULE
define定义的。
我希望有一个人可以帮助我。谢谢!
解决方案
这是不可能的。预处理器宏仅扩展一次,并且仅在不在另一个预处理器语句中时扩展。除此之外,连接只能在#define
语句中使用。
推荐阅读
- scala - 如何在akka scala中连接两个表单数据?
- docker - 如何在 docker swarm 或 kubernetes 中进行 ibmmq 复制?
- angular - mat 自动完成非异步数据
- python - Django 文章文本无法突出显示或链接
- node.js - 当前 URL 字符串解析器在 mongo db 和 nodejs 中已弃用
- json - 从 Dart 中的服务器响应一个 json
- php - 在“if”语句中确定条件的哪一部分为真
- ruby-on-rails - Rails 5.1+:跟踪记录处于阶段/状态的时间
- php - 如何通过 HTML 提交按钮触发 PHP 数组中的下一条记录?
- c# - 将转换后的字符串排序为 DateTime 列。