【发布时间】:2018-08-30 06:14:08
【问题描述】:
#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 都给出相同的效果,那么它们之间有什么区别?我还没有看到这些指令的反汇编代码,如果你看到了,请尝试解释一下。
【问题讨论】:
-
在功能上,它们是等效的,但是,
#if defined()允许像#if defined(A) || defined(B)这样的逻辑运算符,而#ifdef A || B是无效的语法。 -
由于这些是预处理器指令,因此不会为它们生成代码。当编译器开始编译时,它们根本不存在。
标签: c++ c macros directive preprocessor