2012-08-14 42 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

相关问题