c++ - #ifdef VALUE 与 #if Defined (VALUE) 之间有什么区别

标签 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效果是一样的,那么它们之间有什么区别呢?我还没有看到这些指令的反汇编代码,如果您看过,请也尝试解释一下。

最佳答案

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

关于c++ - #ifdef VALUE 与 #if Defined (VALUE) 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52090300/

相关文章:

c++ - 为什么双向迭代器没有运算符 +/-?

c - 未定义对 `pow' 和 `floor' 的引用

c - 有人问我这段代码有什么问题

用于定义符号的 C 宏

c++ - 可以将宏重新定义应用于单个 cpp 文件吗?

c++ - 窗体头文件中的 "error C2653: System is not a class or a namespace name",Visual C++

C 编程的代码助手

c - IAR EW 中的 "Expression preceding parantheses of apparent call must have (pointer-to-) function type"错误

c++ - token 粘贴和 __LINE__

c++ - 将新字段添加到 C++ vector