enum和typedef enum相同吗

来源:互联网 发布:json好处 编辑:程序博客网 时间:2024/05/22 11:46

http://www.cnblogs.com/JCSU/articles/1299051.html大牛啊。


总结一下:

枚举型就是#define,只是替代。


enum定义有多种方法:

1、

enum DAY{MON,SUR,TUES};enum DAY WORKDAY=MON;
2、
enum DAY{MON,SUR,TUES}WORKDAY=MON,WEEKEND;

3、

typedef enum DAYS{MON,SUR,TUES}WORKDAY;WORKDAY everday;//此处WORKDAY为enum DAYS的别名

4、

typedef enum{MONS,SUR}WORKDAY;//此处WORKDAY为该枚举的别名WORDKDAY TODAY;

5、

typedef enum WORKDAY{MONS,SUR};WORKDAY today;//此处typedef用法有点无法理解,只能理解为习惯用法
使用枚举时的注意点:

enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };void main(){    enum DAY yesterday, today, tomorrow;    today = (enum DAY) (yesterday + 1); //类型转换    tomorrow = (enum DAY) 30; //类型转换}

从以上可以得出在定义枚举类型的时候,一般都是在“全局”的。

一、因为更方便各个函数的调用;

二、不会因为在某个函数内定义枚举类型而导致减少内存的应用的效果,可以试想在单片机中枚举类型的存储方式:将其如“0、1、2、3”逐个存入FLASH中,供选择和调用。

如果以上假设证实,则会导致如

tomorrow = (enum DAY) 30; //类型转换,DAY类型中并无30
运行时会报错,或者像指针一样指到错误的值,或者tomorrow的值的确会变成30。这还要视不同环境和不同的编译器,可能产生的结果也不同。
原创粉丝点击