(1)从处理过程的角度看:

#define宏是由编译预处理器在预编译处理时处理的,而且只做简单的字符串的替换。枚举常量则是在编译的时候确定其值的。

(2)从调试的角度看:

通常情况下,在编译器里,可以调试枚举常量,而不能调试宏常量。

(3)从数据的类型看:

#define可以编译任意类型的常量,而枚举只能是定义整型常量。

(4)从代码编写角度看:

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

(5)从可维护性来看:

枚举可以集中管理数据,具相同属性的整形数据可使用枚举,枚举可实现取值的自增,也可指定每个枚举的值,编写代码跟容易,相对来说能减少出错的机会,也便于代码的后期维护和修改。

(6)枚举的取值范围已经限定了,容易进行参数的检查,而define没有这种检查

深入理解C语言——#define宏和枚举的区别相关推荐

  1. c语言 define宏名称if(参数),iOS深思篇 | 宏定义

    一. 简介 宏是一种批量处理的称谓,简单来说就是根据定义好的规则替换一定的文本.替换过程在程序编译期,也因此大量使用宏会造成编译时间变长:而且替换过程不进行类型安全检查;还需要注意"边缘效应 ...

  2. 大牛深入浅出讲解C语言#define宏定义应用及使用方法

    在C语言中,我们使用#define来定义宏.在C程序编译的预处理阶段,预处理器会把宏定义的符号替换成指定的文本. 不带参数的宏 关于宏最常见的就是用来定义数值常量的名称,即没有参数的宏定义,采用如下形 ...

  3. 深入浅出讲解C语言#define宏定义应用及使用方法

    在C语言中,我们使用#define来定义宏.在C程序编译的预处理阶段,预处理器会把宏定义的符号替换成指定的文本. 不带参数的宏 关于宏最常见的就是用来定义数值常量的名称,即没有参数的宏定义,采用如下形 ...

  4. c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体

    枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...

  5. c语言 define宏名称if(参数),宏编程基础内容

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 使用过word软件可能知道里面有个功能就是宏录制,可以录制一系列的操作,然后在之后的工作中,快速插入一组操作,减少重复性 ...

  6. 关于C语言define宏定义字符串常量

    1.问题由来: 本人一直以为宏对于字符串的处理也是直接在预处理时进行替换:但是最近在工作中遇到了字符串宏+1的情况:于是彻底的颠覆了以前的思维:于是乎进行测试验证得出以下结果. 2.测试代码 /*测试 ...

  7. C语言#define宏定义可能注意不到的地方

    #define使用的核心:直接替换 我也觉得自己很清楚这一点,但看到这一道输出程序片段结果题,还是懵了.大家也可以在不看我下方答案的情况下,自己做一下,题目如下: #include<stdio. ...

  8. C语言常用宏定义(#define)使用方法

    ·  正  ·  文  ·  来  ·  啦  · 前言 ------在上篇文章里面,我们分析了预处理的一个完整过程,这能够让我们理解一个写好的程序,在生成一个可执行文件,到底发生了什么,对我们在大型 ...

  9. c语言 #define dpath .exe是什么意思,C语言宏定义#define

    姓名:吕彬 学号:1613014035 [嵌牛导读]#define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代 ...

最新文章

  1. 独家 | 一文读懂PySpark数据框(附实例)
  2. 19-7-14 学习笔记
  3. JAVA中Map集合的使用举例
  4. Android 开发工具类 13_ SaxService
  5. Win7下U盘安装Ubuntu14.04双系统步骤详解 | 浏览:42144 | 更新:2014-05-24 18:09 | 标
  6. Spark 安装配置简单测试
  7. 如何清除浮动(float)所带来的影响
  8. php读取excel中数据库,ThinkPHP 框架实现的读取excel导入数据库操作示例
  9. 考究Hadoop中split的计算方法
  10. Ubuntu16.04 - 安装RabbitVCS,linux下的TortoiseSVN!!!
  11. php和mysql一键安装包_iis+php+mysql一键安装教程和安装包
  12. LeetCode 1676. 二叉树的最近公共祖先 IV
  13. python--面向对象
  14. lumen mysql 事务_数据库事务不执行回滚?
  15. nyoj810 贪心的嘿嘿(想弄死这出题的)
  16. doc和docx、xls和xlsx、ppt和pptx有什么区别?
  17. Kavex GameDev-Resources
  18. mavonEditor编辑器的使用
  19. Spring Bean生命周期,好像人的一生。。
  20. cookie的保存 jq,如何使用jQuery读取Cookie并将其存储在变量中?

热门文章

  1. java怎么获取ajax_Java学习路线
  2. 浅谈 DDoS 攻击与防御
  3. Java json序列化库gson(2)
  4. Android Studio安装genymotion模拟器
  5. Visual Studio 文件没发布出来
  6. 韩顺平 Mysql数据库优化(一) 优化概述
  7. WPF and Silverlight 学习笔记(六):WPF窗体
  8. (全部)2008重磅出击——微软Windows Server 2008实战攻略系列
  9. 关于昌平100度健身俱乐部全民健身情况调查报告
  10. bootstrap 模态框满屏_解决Ueditor在bootstarp 模态框中全屏问题