下面是代碼:麻煩預處理 - 串聯時,「名」和「=」作爲令牌
#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