c语言enum的疑义

c语言enum的疑义

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语言也在不断完善

c语言enum的疑义

相关文章:

你感兴趣的文章:

标签云: