下面是代码:麻烦预处理 - 串联时,“名”和“=”作为令牌
#define STR_CONCAT_IMPL(s1, s2) s1##s2
#define STR_CONCAT(s1, s2) STR_CONCAT_IMPL(s1, s2)
#define TOSTR_IMPL(x) #x
#define TOSTR(x) TOSTR_IMPL(x)
#define STR_CONCAT_TOSTR(s1, s2) TOSTR(STR_CONCAT(s1, s2))
int main() {
const char* a = STR_CONCAT_TOSTR(name, p); // works
const char* b = STR_CONCAT_TOSTR(name, =); // doesn't work
return 0;
}
我需要从"name"
在编译时像"name="
字符串时(runtime拼接不是一种选择),所以我试图用我的旧宏,但我得到这个错误:
error: pasting "name" and "=" does not give a valid preprocessing token
但是,当不使用=
但一个正常的字符 - 它的工作原理。
我该如何得到这个工作?
需要C++ 98 GCC/MSVC解决方案。
我承认你的头像 - 在github史诗并发的东西! – onqtam
哈哈,谢谢:-) – Cameron