关闭

C语言中的枚举与宏定义 及其不同之处

标签: 全局变量enumc语言枚举
242人阅读 评论(0) 收藏 举报
分类:

C语言的枚举与宏定义

有人可能会觉得这个太easy了,本来也没想写这篇文章,但是想想觉得有必要用自己的语言组织一下记下来,跟学习swift的枚举做类比,好理解一些。


一、枚举


1. what:

1)它看起来是这样的:


enum week
{
    MON,
    TUES,
    WED,
    THUR,
    FRI,
    SAT,
    SUN,
};

2)是符号常量的集合

枚举中定义的符号,其本质就是为int型的常量

枚举定义时一般为全局

3)是“值替身”。

用符号来代替数字,用符号来识别


2. why:为什么需要枚举

1)对数字进行符号化

1.用数字:当程序代码多了以后,单纯使用数字不能让程序员马上理解该数字代表的含义,如看到数字0,可能需要查文档才知道具体意义;

2.用枚举:意义明显,如看到MON能马上理解是代表星期一的数字

2)不是必须的,与宏定义类似

与宏定义可互换

3. how:

枚举的定义与使用可参考这篇文章:点击打开链接




二、宏定义


1. what:

1)它看起来是这样的:

#define MON   0
#define TUES  1
#define WED   2
#define THUR  3
#define FRI   4
...

2. why:

1)宏定义类似全局变量,可以改一处,则全部都改掉,方便修改和管理,不用一个一个的去改。

2)在程序预处理时,是将标识符原封不动地替换成标识符后面的变量

3. how:

可参考这篇文章:宏定义方法总结




三、枚举与宏定义区别:


1)枚举是“整”的: 多个有关联的符号放在一个枚举中(如一周有7天,一年的12个月等)。

      宏是“散”的

2)同一程序里,枚举定义的符号不能重名

3)                                         枚举                                        宏

作用时期:             程序运行时                        预处理(替换代码段)

存储形式:             全局变量->数据段             代码段

  消耗CPU

4)什么情况下更适合用枚举?

当需要定义的变量是一个有限集合的时候













0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

C语言枚举与宏选择

C语言枚举与宏选择
  • Fybon
  • Fybon
  • 2017-03-20 17:02
  • 322

详解C语言中的宏定义

1. 防止一个头文件被重复包含  [cpp] view plain copy  print? #ifndef COMDEF_H    #define C...
  • YangT_T
  • YangT_T
  • 2016-06-23 10:29
  • 2815

宏定义和枚举类型的区别

摘要:在C语言的编程中,我们常常需要定义一些常量,此时是采用宏定义还是采用枚举类型呢?它们有哪些区别?本文主要探讨这个问题。 一、作用域对比 1.1宏定义的默认作用...
  • autowanglei
  • autowanglei
  • 2014-11-07 13:47
  • 1237

c语言中的“宏”是指什么?

转载链接:http://zhidao.baidu.com/link?url=MYZDvw0EVnFGaUUTa5u6TfOxTzNbswmo8_e_azYtI7PgnWN1YCTfspZvQCjfeb...
  • mushiheng
  • mushiheng
  • 2016-06-05 16:01
  • 656

C语言宏嵌套问题

嵌套宏
  • wonderful_z
  • wonderful_z
  • 2015-06-24 15:58
  • 945

#define与enum,你不知道的那些事

什么时候需要用到enum呢,就是变量的数值在几个范围之间.red,blue,black.这样用enum比较好.当然也可以用define.但是define维护起来比较麻烦. #define 适合比较少...
  • hbuxiaofei
  • hbuxiaofei
  • 2014-03-25 11:33
  • 8291

C语言宏定义讲解(C和指针 笔记)

关于C语言宏定义#define 最常用的莫过于通过宏定义定义常数了,例如 #define MAX 1000      通过宏定义程序中需要的常量,方便维护被多次引用的变量,并且宏替换在预处理阶段完成...
  • chen735250065
  • chen735250065
  • 2014-01-17 11:50
  • 1057

关于C语言中宏定义的高级运用

1、# (stringizing)字符串化操作符。其作用是:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串。其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。 如: ...
  • u012905667
  • u012905667
  • 2014-06-01 10:41
  • 1604

C语言 - #define宏的定义与使用方法

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • Gilgamesho
  • Gilgamesho
  • 2016-01-18 21:49
  • 2308

【C语言】关于宏定义中#和##符号的使用和宏定义展开问题

1.#在英语里叫做pound,在C语言的宏定义中,一个#表示字符串化,两个#代表concatenate。 2.实例一: #include void quit_command(){ prin...
  • u014186096
  • u014186096
  • 2015-09-18 11:37
  • 607
    个人资料
    • 访问:9109次
    • 积分:516
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:5篇
    • 译文:0篇
    • 评论:6条
    文章分类
    最新评论