【问题标题】:What is the difference between #ifdef VALUE vs #if defined (VALUE) [duplicate]#ifdef VALUE 与 #if defined (VALUE) 有什么区别 [重复]
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 您好,可以举个例子吗?
  • 编造的例子:#if defined WINDOWS &amp;&amp; defined _DEBUG
猜你喜欢
  • 2016-02-27
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 2016-11-22
相关资源
最近更新 更多