#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;
}
Run Code Online (Sandbox Code Playgroud)
输出
10 0
是什么意思#if defined(MIN) + defined(MAX)?
为什么它在#define MAX 10以后定义时有效?
在这种情况下,它是相同的||:
#if defined(MIN) || defined(MAX)
...
#endif
Run Code Online (Sandbox Code Playgroud)
的defined(...)操作者产生一个0或1整数,并且#if采取任何整数表达式,只要它可以在预处理的时间进行评价.
例如,+在预处理器条件下使用可以构建更有趣的构造
#if (defined(MIN) + defined(MAX) + defined(AVG)) >= 2
...
#endif
Run Code Online (Sandbox Code Playgroud)
这意味着" {MIN, MAX, AVG}定义了三个项目中的至少两个".