#ifdef VALUE与#if defined(VALUE)有什么区别

时间:2018-08-30 06:14:09

标签: c++ c macros directive preprocessor

#include<stdio.h>
#define MAX 0
int main()
{
#ifdef MAX
printf("MAX defined");
#endif
#if defined (MAX)
printf("MAX is defined");
#endif
return 0;
}

#ifdef#if defined都具有相同的效果,那么它们之间有什么区别?如果您看到过这些指令的反汇编代码,那么请尝试解释一下。

1 个答案:

答案 0 :(得分:3)

差异是历史性的。最初只有#ifdef。较新的语法更加灵活,可以将测试与逻辑条件结合起来,但是以简单的形式,您可以互换使用它们。