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