3 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
我不認(rèn)為有一種方法可以完全在預(yù)處理程序指令中進(jìn)行可變長(zhǎng)度字符串比較。您也許可以執(zhí)行以下操作:
#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
或者,您可以稍微重構(gòu)代碼,而改用C代碼。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
以下對(duì)我有用。允許顯示為符號(hào)宏值比較的內(nèi)容。#error xxx只是看編譯器的實(shí)際作用。用#define cat(a,b)a ## b替換cat定義會(huì)破壞事情。
#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 關(guān)注
- 1097 瀏覽
添加回答
舉報(bào)