2012-08-14 69 views
1
#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定義了什麼嗎?我可以檢查預編譯中定義的宏嗎?

+1

你有沒有真正嘗試你寫的嗎? – 2012-08-14 10:06:38

+0

我只是寫一些演示代碼來表達我的意思。我只想檢查宏STR_A定義的內容。 – qiushuitian 2012-08-14 10:18:59

回答

3

如果你想檢查是否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 
+0

wa !!!非常感謝! – qiushuitian 2012-08-14 13:35:48

-1

當試圖區分操作系統時,會發生相當多的事情。

同樣可以用於您的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 
+0

預處理程序無法處理字符串,所以你的建議根本不起作用 – 2012-08-14 10:15:42

+0

當然,我忘了這一點。操作系統宏是整數。 – sacko87 2012-08-14 11:17:36

相關問題