#if中定义的'+'的功能是什么?

时间:2014-02-04 16:14:46

标签: c

#include <stdio.h>

#define MIN 0

#if defined(MIN) + defined(MAX)

#define MAX 10

#endif

int main()

{

    printf("%d %d\n", MAX, MIN);

    return 0;

}  

输出
10 0
#if defined(MIN) + defined(MAX)的含义是什么? 为什么以后定义#define MAX 10时它会起作用?

3 个答案:

答案 0 :(得分:6)

The defined operator的计算结果为0或1,具体取决于是否定义了符号。

算术在预处理程序表达式中起作用,1 + 0为1,因此#if被采用。

答案 1 :(得分:5)

在这种情况下,它与||

相同
#if defined(MIN) || defined(MAX)
    ...
#endif

defined(...)运算符生成01整数,#if采用任何整数表达式,只要可以在预处理时对其进行求值。 / p>

在预处理器条件中使用+可以构建更有趣的构造,例如

#if (defined(MIN) + defined(MAX) + defined(AVG)) >= 2
    ...
#endif

这意味着&#34;三个项目{MIN, MAX, AVG}中至少有两个被定义为&#34;。

答案 2 :(得分:3)

您可以在预处理器中进行简单的数学运算。 #if defined(...)的计算结果为整数0或1。 defined(MIN)1,而defined(MAX)0,因此整个表达式的结果为1 = trueMAX已定义。