当前位置:  编程技术>c/c++/嵌入式

枚举和宏的区别详细解析

    来源: 互联网  发布时间:2014-10-20

    本文导语:  枚举常量与宏的区别主要有几点: 1。枚举常量是实体中的一种,但宏不是实体; 2。枚举常量属于常量,但宏不是常量; 3。枚举常量具有类型,但宏没有类型,枚举变量具有与普通变量相同的诸如作用域、值等性质,但宏没...

枚举常量与宏的区别主要有几点:

1。枚举常量是实体中的一种,但宏不是实体;

2。枚举常量属于常量,但宏不是常量;

3。枚举常量具有类型,但宏没有类型,枚举变量具有与普通变量相同的诸如作用域、值等性质,但宏没有,宏不是语言的一部分,它是一种预处理替换符。枚举类型主要用于限制性输入,例如,某个函数的某参数只接受某种类型中的有限个数值,除此之外的其它数值都不接受,这时候枚举能很好地解决这个问题。能用枚举尽量用枚举,否则在调试的时候你是看不到当时的值的。

4。用宏去定义一个变量如果你定义了一个相同的变量那么要看谁在前面,如果宏在前面变量会产生编译错误,而且这个错误很难查找,如果那个宏隐藏的很深的话。如果你定义的变量在前那么更可怕了,直接没有错误,但是宏定义被自定义的变量悄悄替换了。用枚举定义的话不管你定义的顺序前后关系怎样都会产生重复定义的错误。从上面的举例来看枚举比宏好用的多。宏还有一个特性是没有作用域,这里的作用域是指宏定义以后的代码都可以使用这个宏。宏可以被重复定义这个可能导致宏的值被修改。所以建议不要用宏去定义整形的变量,用枚举或者const。又会有用const还是枚举呢,世界一向如此纠结,枚举只能表示整形,const可以修饰任何类型。整形的情况下如果你要定义几种有关系的数值那么用枚举,否则用const。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql枚举clientinfostatus的类成员方法: valueof定义及介绍
  • java自定义枚举转换器示例
  • java命名空间java.math枚举roundingmode的类成员方法: valueof定义及介绍
  • C#实现获取枚举中元素个数的方法
  • java命名空间javax.swing枚举dropmode的类成员方法: valueof定义及介绍
  • 枚举类型变量如何定义与初始化,如何给该变量加入新值?
  • java命名空间javax.swing枚举sortorder的类成员方法: valueof定义及介绍
  • 关于Ubuntu枚举usb设备的问题?
  • java命名空间java.sql枚举rowidlifetime的类成员方法: valueof定义及介绍
  • Linux下怎么枚举usb设备?
  • java命名空间javax.tools枚举standardlocation的类成员方法: valueof定义及介绍
  • C# 遍历枚举类型的所有元素
  • java命名空间javax.xml.ws枚举service.mode成员方法: valueof定义参考
  • corba枚举类型参数传递问题?(大笨鸟问题)
  • java命名空间java.lang.management枚举memorytype的类成员方法: valueof定义及介绍
  • C# 获取枚举值的简单实例
  • java命名空间java.lang.annotation枚举elementtype的类成员方法: valueof定义及介绍
  • java中没有枚举变量,类似的功能如何简单实现?
  • java命名空间javax.lang.model枚举sourceversion的类成员方法: valueof定义及介绍
  • JAVA 为什么没有枚举类型???
  • java命名空间java.lang.annotation枚举retentionpolicy的类成员方法: valueof定义及介绍
  • 如何进行输入法枚举


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3