#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定義了什麼嗎?我可以檢查預編譯中定義的宏嗎?
#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
wa !!!非常感謝! – qiushuitian 2012-08-14 13:35:48
當試圖區分操作系統時,會發生相當多的事情。
同樣可以用於您的STR_A。
#if defined(STR_A)
# if (STR_A == "abc")
// do something
# else
// do something else
# endif
#else
#warning "STR_A has not been defined."
#endif
預處理程序無法處理字符串,所以你的建議根本不起作用 – 2012-08-14 10:15:42
當然,我忘了這一點。操作系統宏是整數。 – sacko87 2012-08-14 11:17:36
你有沒有真正嘗試你寫的嗎? – 2012-08-14 10:06:38
我只是寫一些演示代碼來表達我的意思。我只想檢查宏STR_A定義的內容。 – qiushuitian 2012-08-14 10:18:59