我可以检查在预编译中定义了什么宏吗?

标签 c macros precompile

#define STR_A  abc
#if STR_A == abc   //I want to make some check here
    do something A
#else
    do something B
#endif

我可以检查 STR_A 定义了什么吗?

最佳答案

如果你想检查 STR_A 是否被定义为标记 abc(它本身不应该是另一个宏)你可以用一些技巧帮助自己

#define STR_A_TESTER_abc 1
#define CONCAT(A, B) A ## B
#define STR_A_TESTER CONCAT(STR_A_TESTER_, STR_A)

#if STR_A_TESTER
// do whatever
#else
// or other
#endif

关于我可以检查在预编译中定义了什么宏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11949837/

相关文章:

c - Hook 在终端上。我可以在终端中运行命令之前调用方法吗?

c - 读取文件时无法检查换行符

c - 在初始化函数以 C 结尾后保留笔画标记

c++ - #define C++ 关键字 'case' 在 switch case 语句中?

c++ - 在 f2c.h 文件中定义 min() max() 宏时出错

用于扩展导入的 Python 预解释器

部署到 Heroku 时 CSS 不起作用

c - 编译库与仅在应用程序中使用其源文件之间的区别

clojure - 为什么这个 clojure 宏需要 `' ~?

objective-c - 词法或预处理器问题