#define | enum(enumerator)
/****************************************************************************
* #define | enum(enumerator)
* 声明:
* 今天突然在Linux内核看到枚举和宏,感觉是一样的功能,于是找了一下他们
* 之间差异。
*
* 2015-12-26 深圳 南山平山村 曾剑锋
***************************************************************************/
一、参考文档:
. 宏和枚举的区别
http://www.xuebuyuan.com/1875170.html
. 枚举enum和#define的区别
http://www.programgo.com/article/7470399691/;jsessionid=FD993C1249B479189AC31D71F71FC06D
. 使用枚举和使用宏的区别
http://www.programgo.com/article/11502742125/ 二、总结说明:
. 宏和枚举之间的差别主要在作用的时期和存储的形式不同;
. 宏是在预处理的阶段进行替换工作的,它替换代码段的文本,程序运行的过程中宏已不存在了;
. 枚举是在程序运行之后才起作用的,枚举常量存储在数据段的静态存储区里;
. 宏占用代码段的空间,而枚举除了占用空间,还消耗CPU资源;
. 一般在编译器里,可以调试枚举变量,但是不能调试宏常量;
. 枚举可以一次定义大量相关的常量,而define一次只能定义一个;
#define | enum(enumerator)的更多相关文章
- enum 与 #define
enum 与 #define 一.为什么既要有enum,又要define enum is derived from enumerate, from ex- + number,字面意思就是用数字排列,报 ...
- #define vs. const vs enum
In one word, using const is better than define. enum is the best. There are lots of discussions. I p ...
- 一篇perfect描述“神秘”inf文件的文章[转]
INF Files for Bears of Little BrainMay 1, 2003Brian Catlin Copyright � 2003 by Brian Catlin. All rig ...
- C++98/11/17表达式类别
目标 以下代码能否编译通过,能否按照期望运行?(点击展开) #include <utility> #include <type_traits> namespace cpp98 ...
- plain framework 商业版 开发总结2 项目管理器
任何事情都有三个阶段,分析.制作.质检的过程.在程序中就分为设计.编码.调试(测试)三个阶段,其中设计最为重要,设计的不好会导致编码和调试重复,甚至最后又回到了设计的过程.为了不会重复返工,所以设计的 ...
- plain framework 商业版 开发总结1 updated
每天对着不同的计划,多多少少有一种无形的压力.特别是对技术不好的我来说,过程中遇到的问题实在不少,时常纠结良久.时间慢慢流逝,最后虽然感觉有些不足,但是也不至于差强人意.商业版的PF核心已经升级到1. ...
- 一个简单的C语言语法检查器的实现
我自己的实现方法的核心过程:首先用一个非终结符代表所有要检查的程序代码,然后根据文法将这个整体的符号不断展开,以拼凑成按检查的程序的顺序排列的终结符序列,能成功说明语法正确,否则有错误. 关键词:分词 ...
- 用C写的俄罗斯方块游戏 By: hoodlum1980 编程论坛
/************************************ * Desc: 俄罗斯方块游戏 * By: hoodlum1980 * Email: jinfd@126.com * Dat ...
- [转载] FFmpeg API 变更记录
最近一两年内FFmpeg项目发展的速度很快,本来是一件好事.但是随之而来的问题就是其API(接口函数)一直在发生变动.这么一来基于旧一点版本的FFmpeg的程序的代码在最新的类库上可能就跑不通了. 例 ...
随机推荐
- App接口设计
关于APP接口设计 http://blog.csdn.net/gebitan505/article/details/37924711/
- 用httpPost对JSON发送和接收的例子
HTTPPost发送JSON: private static final String APPLICATION_JSON = "application/json"; ...
- C++名字空间/C++命名空间
0.序言 名字空间是C++提供的一种解决符号名字冲突的方法. 一个命令空间是一个作用域,在不同名字空间中命名相同的符号代表不同的实体. 通常,利用定义名字空间的办法,可以使模块划分更加方便,减少模块间 ...
- hashmap理解总结
1.hashmap是通过存放对象的hash算法进行对象的存储的,其查询,put,get方法均是. 所以将对象存储进hashmap,set啥时候,要重写hashcode方法. 2.hash算法存储,查询 ...
- 打印TMemo的内容到打印机
Canvas.TextOut真是好用,Printer也实在好用: procedure PrintTStrings(Lst : TStrings) ; var I, Line : Integer; be ...
- RHEL7服务管理
对于学习过红帽RHEL6的系统或已经习惯使用service.chkconfig等命令来管理系统服务的用户可能要郁闷了, 因为在红帽RHEL7系统中管理服务的命令变成了“systemctl”,但使用方法 ...
- Android 闹钟设置
在Android中可以通过AlarmManager 来实现闹钟,AlarmManager类是专门用来设定在某个指定的时间去完成指定的事件.AlarmManager 提供了访问系统警报的服务,只要在程序 ...
- 局域网聊天软件(winsocket)
LANChat工作整理 2013/8/22 程序实现功能: 局域网聊天软件,启动即可找到在线设备,并能够进行简单的文字聊天. 其实下面这个框图已经说明了程序的绝大部分功能原理. 核心类的程序框图 我觉 ...
- Lantern免费使用教程【转】
转自:http://www.mfbuluo.com/13710.html 自从谷歌去年退出中国后,可能是意识到中国市场的潜力,所说这款Lantern免费的软件,背后有谷歌的资助,这一点部落无法肯定. ...
- Java异常 —— java.lang.NoClassDefFoundError
一直使用 Eclipse 来开发 Java . 现学习 Maven,在 cmd 下使用 Java ,出现了这样的异常:Exception in thread "main" java ...