枚举和宏的区别详细解析

 更新时间:2020年4月25日 17:44  点击:2021

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

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

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

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

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

[!--infotagslink--]

相关文章

  • C#编程中枚举类型的使用教程

    这篇文章主要介绍了C#编程中枚举类型的使用,是C#入门学习中的基础知识,需要的朋友可以参考下...2020-06-25
  • TypeScript魔法堂之枚举的超实用手册

    这篇文章主要介绍了TypeScript魔法堂之枚举的超实用手册,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-29
  • C# 枚举的使用简介

    这篇文章主要介绍了C# 枚举的简单使用,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下...2021-03-13
  • C#中变量、常量、枚举、预处理器指令知多少

    这篇文章主要介绍了c#共有其中变量类型有:静态变量、实类变量、数组元素、数值参数、引用参数、输出参数和局部变量,需要的朋友可以参考一下...2020-06-25
  • C#如何给枚举类型增加一个描述特性详解

    这篇文章主要给大家介绍了关于C#如何给枚举类型增加一个描述特性的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • 详细了解C# 枚举与位枚举

    这篇文章主要介绍了C# 枚举与位枚举的相关资料,文中讲解非常细致,帮助大家更好的理解和学习枚举和位枚举,感兴趣的朋友可以了解下...2020-11-03
  • 枚举窗口句柄后关闭所有窗口示例

    这篇文章主要介绍了关闭所有窗口的方法,原理是枚举所有窗口句柄,然后发送WM_CLOSE消息来关闭窗口,需要的朋友可以参考下...2020-04-25
  • 全面了解结构体、联合体和枚举类型

    下面小编就为大家带来一篇全面了解结构体、联合体和枚举类型。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
  • C#从foreach语句中枚举元素看数组详解

    这篇文章主要给大家介绍了关于C#从foreach语句中枚举元素看数组的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。...2020-06-25
  • 字符串转换成枚举类型的方法

    字符串可以向int, bool等类型转变,但是字符串是否可以向枚举转变呢?一起看下边的例子...2020-06-25
  • Linux内核宏Container_Of的详细解释

    我们在分析Linux内核链表的时候注意到内核在求解结构体偏移的时候巧妙的使用了container_of宏定义,本文我们就来详细剖析下内核到底是如何求解结构体成员变量的地址的。...2021-09-10
  • C#枚举数值与名称的转换实例分享

    在应用枚举的时候,时常需要将枚举和数值相互转换的情况。有时候还需要转换成相应的中文。下面介绍一种方法...2020-06-25
  • c#入门之枚举和结构体使用详解(控制台接收字符串以相反的方向输出)

    这篇文章主要介绍了c#入门之枚举和结构体使用详解,最后提供了编写控制台应用程序接收字符串并做相应处理的小示例,需要的朋友可以参考下...2020-06-25
  • C/C++ 宏详细解析

    关于宏的一些语法问题,可以在google上找到。相信我,你对于宏的了解绝对没你想象的那么多。如果你还不知道#和##,也不知道prescan,那么你肯定对宏的了解不够...2020-04-25
  • .NET中的枚举用法浅析

    这篇文章主要介绍了.NET中的枚举用法,分析了枚举的定义、转换、判定等常见用法,需要的朋友可以参考下...2021-09-22
  • C#如何获取枚举的描述属性详解

    这篇文章主要给大家介绍了关于C#如何获取枚举的描述属性的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • C#如何利用反射将枚举绑定到下拉框详解

    这篇文章主要给大家介绍了关于C#如何利用反射将枚举绑定到下拉框的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧...2020-06-25
  • 李彦宏憋着大招:人工智能

    无论是9月1号的百度大会,还是李彦宏在G20峰会上的演讲,还是李彦宏近日接受央视的采访,“人工智能”一直是李彦宏挂在嘴边的四个字。或许搜索引擎起家的百度,正在有意减少在这方面的色彩,加大力气投入人工智能领域。...2016-09-12
  • 深入探讨:宏、内联函数与普通函数的区别

    本篇文章是对宏、内联函数与普通函数的区别进行了详细的分析介绍,需要的朋友参考下...2020-04-25
  • Swift枚举的一些小用法总结

    这篇文章主要给大家介绍了关于Swift枚举的一些小用法,文中通过示例代码介绍的非常详细,对大家学习或者使用Swift具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-30