Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1542823
  • 博文数量: 596
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 15:50
个人简介

在线笔记

文章分类

全部博文(596)

文章存档

2016年(1)

2015年(104)

2014年(228)

2013年(226)

2012年(26)

2011年(11)

分类: C/C++

2013-02-20 17:07:00

1)先看代码
#define NONE
#define ZERO 0
#define ONE 1
#define TWO 2
void marcon_test()
{
#ifdef NONE 
    printf("none\n");
#endif
#ifdef ZERO
    printf("zero\n");
#endif

#if ZERO
    printf("zero\n");
#elif TWO
    printf("two\n");
#elif ONE
    printf("one\n");                                                                                        
#endif
}

 
代码运行的结果是:none,zero,two
2)注释掉NONE

//#define NONE

a)gcc编译时,不加-DNONE,
运行结果为:zero,two
 b)gcc编译时,加上-DNONE
运行结果为:none,zero,two

3)总结

a)#if ONE相当于if (0)

  #if NONE相当于if (),编译出错

b)#ifdef只要你定义过,都有效

#define NONE

#define ZERO 0

gcc -DNONE


阅读(1626) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~