论define,const,enum三者的区别

      1.#define宏定义 的本质是宏替换,它定义的数据没有类型。如#define MAX 10,意味着从本行宏定义开始,在后面的代码中编译器会在预处理阶段将所遇到的MAX都用10替换,这样就做到了一改全改,省时省力。然而需要注意接下来的几种情况:

  •         #define ERROR_POWEROFF -1

                如果我们在代码里不用ERROR_POWEROFF 这个宏而用-1,尤其在函数返回错误代码的时候(往往开发一个系统需要定义很多错误代                         码),所以我们见到这个-1时一定很懵逼,这个-1,我们一般称为“魔鬼数”,论谁遇到它也会发狂的。所以代码里一定不要出现“魔鬼数”。

  •       不要一时手误给#define MAX 10后面加分号。则编译器会认为MAX应该用10;代替,岂不是尴尬了。

  •      宏定义不开辟内存空间,不进行类型检查 

  •      define不是C语言里的关键字。

           2. const修饰的是常变量,也就是说它所修饰的是一个变量,只是这个变量只可读不可改,具有常性,比如const int max=10,在后面我们不能修         改max 的值。这里 有几点需要说明:

  •      const在编译时进行替换,宏定义在预处理阶段进行替换
  •      const 修饰的只读变量必须在定义的同时初始化
  •      编译器会给const 修饰的只读变量做类型校验,而宏定义不会
      3.enum
             1)枚举常量是在编译的时候确定其值
             2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量
             3)枚举可以一次定义大量相关的常量,而#define 宏一次只能定义一个
                  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值