深入理解C语言——#define宏和枚举的区别
(1)从处理过程的角度看:
#define宏是由编译预处理器在预编译处理时处理的,而且只做简单的字符串的替换。枚举常量则是在编译的时候确定其值的。
(2)从调试的角度看:
通常情况下,在编译器里,可以调试枚举常量,而不能调试宏常量。
(3)从数据的类型看:
#define可以编译任意类型的常量,而枚举只能是定义整型常量。
(4)从代码编写角度看:
枚举可以一次定义大量常量,而#define宏只能一次定义一个。
(5)从可维护性来看:
枚举可以集中管理数据,具相同属性的整形数据可使用枚举,枚举可实现取值的自增,也可指定每个枚举的值,编写代码跟容易,相对来说能减少出错的机会,也便于代码的后期维护和修改。
(6)枚举的取值范围已经限定了,容易进行参数的检查,而define没有这种检查
深入理解C语言——#define宏和枚举的区别相关推荐
- c语言 define宏名称if(参数),iOS深思篇 | 宏定义
一. 简介 宏是一种批量处理的称谓,简单来说就是根据定义好的规则替换一定的文本.替换过程在程序编译期,也因此大量使用宏会造成编译时间变长:而且替换过程不进行类型安全检查;还需要注意"边缘效应 ...
- 大牛深入浅出讲解C语言#define宏定义应用及使用方法
在C语言中,我们使用#define来定义宏.在C程序编译的预处理阶段,预处理器会把宏定义的符号替换成指定的文本. 不带参数的宏 关于宏最常见的就是用来定义数值常量的名称,即没有参数的宏定义,采用如下形 ...
- 深入浅出讲解C语言#define宏定义应用及使用方法
在C语言中,我们使用#define来定义宏.在C程序编译的预处理阶段,预处理器会把宏定义的符号替换成指定的文本. 不带参数的宏 关于宏最常见的就是用来定义数值常量的名称,即没有参数的宏定义,采用如下形 ...
- c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体
枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...
- c语言 define宏名称if(参数),宏编程基础内容
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 使用过word软件可能知道里面有个功能就是宏录制,可以录制一系列的操作,然后在之后的工作中,快速插入一组操作,减少重复性 ...
- 关于C语言define宏定义字符串常量
1.问题由来: 本人一直以为宏对于字符串的处理也是直接在预处理时进行替换:但是最近在工作中遇到了字符串宏+1的情况:于是彻底的颠覆了以前的思维:于是乎进行测试验证得出以下结果. 2.测试代码 /*测试 ...
- C语言#define宏定义可能注意不到的地方
#define使用的核心:直接替换 我也觉得自己很清楚这一点,但看到这一道输出程序片段结果题,还是懵了.大家也可以在不看我下方答案的情况下,自己做一下,题目如下: #include<stdio. ...
- C语言常用宏定义(#define)使用方法
· 正 · 文 · 来 · 啦 · 前言 ------在上篇文章里面,我们分析了预处理的一个完整过程,这能够让我们理解一个写好的程序,在生成一个可执行文件,到底发生了什么,对我们在大型 ...
- c语言 #define dpath .exe是什么意思,C语言宏定义#define
姓名:吕彬 学号:1613014035 [嵌牛导读]#define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代 ...
最新文章
- 独家 | 一文读懂PySpark数据框(附实例)
- 19-7-14 学习笔记
- JAVA中Map集合的使用举例
- Android 开发工具类 13_ SaxService
- Win7下U盘安装Ubuntu14.04双系统步骤详解 | 浏览:42144 | 更新:2014-05-24 18:09 | 标
- Spark 安装配置简单测试
- 如何清除浮动(float)所带来的影响
- php读取excel中数据库,ThinkPHP 框架实现的读取excel导入数据库操作示例
- 考究Hadoop中split的计算方法
- Ubuntu16.04 - 安装RabbitVCS,linux下的TortoiseSVN!!!
- php和mysql一键安装包_iis+php+mysql一键安装教程和安装包
- LeetCode 1676. 二叉树的最近公共祖先 IV
- python--面向对象
- lumen mysql 事务_数据库事务不执行回滚?
- nyoj810 贪心的嘿嘿(想弄死这出题的)
- doc和docx、xls和xlsx、ppt和pptx有什么区别?
- Kavex GameDev-Resources
- mavonEditor编辑器的使用
- Spring Bean生命周期,好像人的一生。。
- cookie的保存 jq,如何使用jQuery读取Cookie并将其存储在变量中?
热门文章
- java怎么获取ajax_Java学习路线
- 浅谈 DDoS 攻击与防御
- Java json序列化库gson(2)
- Android Studio安装genymotion模拟器
- Visual Studio 文件没发布出来
- 韩顺平 Mysql数据库优化(一) 优化概述
- WPF and Silverlight 学习笔记(六):WPF窗体
- (全部)2008重磅出击——微软Windows Server 2008实战攻略系列
- 关于昌平100度健身俱乐部全民健身情况调查报告
- bootstrap 模态框满屏_解决Ueditor在bootstarp 模态框中全屏问题