如果定义了至少一个宏,则可以轻松检查一行:
#if defined(A) || defined(B) || defined(C)
// do something
#endif
如果未定义至少一个宏,则还要检查一行:
#if !defined(A) || !defined(B) || !defined(C)
// do something
#endif
问题: 如何检查单行中没有定义任何宏?
我可以用三行中的ifndef来完成,如下所示:
#ifndef A
#ifndef B
#ifndef C
// do something
#endif
#endif
#endif
但是如何将三个ifndef加入一行?
答案 0 :(得分:4)
模拟嵌套的#ifndef
':
#if !defined(A) && !defined(B) && !defined(C)
// do something
#endif
检查没有定义。你说你想要"至少有一个没有定义",但你的例子涵盖||
s。
答案 1 :(得分:3)
嵌套#ifndef
只能与&&
#if !defined(A) && !defined(B) && !defined(C)
#endif
答案 2 :(得分:2)
问题:如何在一行中检查没有定义任何宏?
#if defined A
。#if !defined A
。 "如果没有定义A"。#if !defined A && !defined B && !defined C
"如果未定义A且未定义B且未定义C" 常识通常会让你在布尔代数中走得很远。要找出更复杂情况的布尔方程,请定义真值表。例如:
0 =假(未定义) 1 =真(定义)
A B C Output
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0