首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

c语言enum的疑义

2012-09-23 
c语言enum的疑问是否申明为enum的变量不一定取枚举中的值,如void(*brightness_set)(struct led_classdev *

c语言enum的疑问
是否申明为enum的变量不一定取枚举中的值,如  

void (*brightness_set)(struct led_classdev *led_cdev, enum led_brightness brightness);

但是 enum led_brightness 的定义只有3个
enum led_brightness {
LED_OFF= 0,
LED_HALF= 127,
LED_FULL= 255,
};
原先以为brightness只能取上面的三个值,但实际看好像不是,brightness可以取任意整数,
但如果允许这样的化,有何必声明为 enum led_brightness 呢? 


[解决办法]
方便人理解代码
[解决办法]
enum 和#define 差不多,只是#define 在编译的时候不做类型检查,而enum做类型检查。enum写的代码别人更容易理解。
[解决办法]
这个不得不说是一个遗憾吧,对于C来讲,并不会去检查枚举是否是“合法”的,更多的是给程序员看的,不过说实话,意义并不是非常大……
这一点在C++中得到了修正,不知道C99里有没有修正,LZ有兴趣的话,可以自己证实一下……
使用enum实际上是一种比较良好的编程风格,尽量少的使用#define,除非#define是必须的……
[解决办法]
深入的说,原来C语言也在不断完善

热点排行