3 回答
TA贡献1801条经验 获得超16个赞
我不认为有一种方法可以完全在预处理程序指令中进行可变长度字符串比较。您也许可以执行以下操作:
#define USER_JACK 1
#define USER_QUEEN 2
#define USER USER_JACK
#if USER == USER_JACK
#define USER_VS USER_QUEEN
#elif USER == USER_QUEEN
#define USER_VS USER_JACK
#endif
或者,您可以稍微重构代码,而改用C代码。
TA贡献1829条经验 获得超6个赞
以下对我有用。允许显示为符号宏值比较的内容。#error xxx只是看编译器的实际作用。用#define cat(a,b)a ## b替换cat定义会破坏事情。
#define cat(a,...) cat_impl(a, __VA_ARGS__)
#define cat_impl(a,...) a ## __VA_ARGS__
#define xUSER_jack 0
#define xUSER_queen 1
#define USER_VAL cat(xUSER_,USER)
#define USER jack // jack or queen
#if USER_VAL==xUSER_jack
#error USER=jack
#define USER_VS "queen"
#elif USER_VAL==xUSER_queen
#error USER=queen
#define USER_VS "jack"
#endif
- 3 回答
- 0 关注
- 1030 浏览
添加回答
举报