枚举enum与#define 宏的区别?

1)#define 宏常量是在预编译阶段进行简单替换。枚举常量则是在编译的时候确定其值。

2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量。

3)枚举可以一次定义大量相关的常量,而#define 宏一次只能定义一个。

4)枚举可以自增1,这样不用每一个值都定义,而宏必须每个值都定义。

5)枚举是一个集合,代表一类值,像你代码中的颜色归为一类,方便使用,而宏不能形成集合。

6)enum Color
{
GREEN = 1,
RED,
BLUE,
GREEN_RED = 10,
GREEN_BLUE
}ColorVal;
sizeof(ColorVal)是4,因为ColorVal是一个枚举变量,而枚举变量代表一个整数(如ColorVal = RED),而整数是4个字节。

枚举enum与#define 宏的区别?相关推荐

  1. iOS中的枚举:enum, NS_ENUM, NS_OPTIONS的使用区别

    1.enum可以声明一般类型和位掩码(bitmasked)类型 例如: enum Test{// 一般枚举 TestA, TestB, TestC, }; enum{// 匿名枚举 TestA, Te ...

  2. 枚举(enum)、宏定义(#define)、结构体(struct)的拾遗

    1.宏定义 1.1.不带参数的宏定义 #define 标识符 字符串           例如:#define PI 3.1415926 说明: (1)宏名一般习惯用大写字母表示,但并非规定,也可以用 ...

  3. 深入理解C语言——#define宏和枚举的区别

    (1)从处理过程的角度看: #define宏是由编译预处理器在预编译处理时处理的,而且只做简单的字符串的替换.枚举常量则是在编译的时候确定其值的. (2)从调试的角度看: 通常情况下,在编译器里,可以 ...

  4. const常量与define宏定义的区别

    #define RADIUS 100; const  float   RADIUS = 100; (1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. ( ...

  5. typedef与#define宏区别

    先让我们了解一下typedef的功能,typedef简单来说就是给类型取一个别名: 如 typedef int New   那么int就有一个别名叫New了,以后size就和int这个类型一共用法了. ...

  6. define宏定义和const定义之间的区别

    define部分: 宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段.(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议.) 宏的语法为: #define 宏名称 宏值 注意,宏定义不 ...

  7. C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策

    一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...

  8. const与#define宏定义的区别——C语言深度剖析

    const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量,存放在静态区),而#define定义的宏常量在内存中有若干个拷贝. #define宏是在预编译阶段进行替换,而const修 ...

  9. #define宏加括号和不加括号的区别

    #define 宏是在代码中不加任何验证的直接替代,当宏中包含运算符时要在最外层加括号,不然可能会出错 下面使用一个简单的例子来验证一下,代码中定义一个求两个数中最大数的宏: MAX_wrong在外层 ...

最新文章

  1. 从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误
  2. 简单探讨TypeScript 枚举类型
  3. Tech ED的课程和动手实验营讲义已经发布,需要的赶紧去下载
  4. Asp.Net站点整合Discuz论坛实现同步注册和单点登录
  5. 自由自在休闲食品实现奶茶妹的创业梦
  6. java 获取服务器硬件_dell服务器远程获取硬件状态
  7. 找到一个比较熟悉Go语言的国内博客
  8. localhost可以访问 ip不能访问_为啥用 ip 不可以访问知乎,而百度却可以?
  9. Spring(三)Bean继续入门
  10. C 线程同步的四种方式(Linux)
  11. NodeManager节点启动报错内存不足
  12. Android手机音量变大器,音量扩大器:安卓大音量设置技巧
  13. 插图详解Python解决汉诺塔问题
  14. 毕业论文选题方法和论文各部分写作技巧
  15. status计算机语言,status 在c语言中的用法?请高手指教、、、、谢谢
  16. 文字翻译软件哪个好用?亲测好用的软件分享
  17. shell-定时备份数据库发送至邮箱
  18. Vue学习之认识到应用(三)
  19. 计算机基础实验测试题第一章(悄悄变强秘籍)
  20. MHDD硬盘坏道检测修复教程(转)

热门文章

  1. DevOps:软件架构师行动指南(文摘)
  2. Gym 101606 F-Flipping Coins(概率dp)
  3. 链接SQL Server服务器
  4. mac下mysql的安装
  5. 高效使用Vector
  6. win2003系统+IIS6下,经常出现w3wp.exe和sqlserver.exe的内存占用居高不下
  7. HDOJ HDU 1106 排序 ACM 1106 IN HDU
  8. [转] 全面了解Windows任务管理器
  9. ctime库函数的使用
  10. Ubuntu虚拟机JeOS安装-2016.08.28