c语言enum的疑问

月光宝盒 2012-09-14 12:02:59
是否申明为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 呢?
...全文
210 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
月光宝盒 2012-09-14
  • 打赏
  • 举报
回复
这样看来真的可以随便取整数了!?
但起码去检查是否在这里取值了
enum led_brightness {
LED_OFF = 0,
LED_HALF = 127,
LED_FULL = 255,
};
不要随便就可以brightness=10 250,或其他
子谋 2012-09-14
  • 打赏
  • 举报
回复
这个不得不说是一个遗憾吧,对于C来讲,并不会去检查枚举是否是“合法”的,更多的是给程序员看的,不过说实话,意义并不是非常大……
这一点在C++中得到了修正,不知道C99里有没有修正,LZ有兴趣的话,可以自己证实一下……
使用enum实际上是一种比较良好的编程风格,尽量少的使用#define,除非#define是必须的……
yong_f 2012-09-14
  • 打赏
  • 举报
回复
enum 和#define 差不多,只是#define 在编译的时候不做类型检查,而enum做类型检查。enum写的代码别人更容易理解。
deep_pro 2012-09-14
  • 打赏
  • 举报
回复
方便人理解代码
qq120848369 2012-09-14
  • 打赏
  • 举报
回复
C++里enum是类,C里就是整形,有问题吗?
titer1 2012-09-14
  • 打赏
  • 举报
回复
深入的说,原来C语言也在不断完善
titer1 2012-09-14
  • 打赏
  • 举报
回复
宏 枚举 学习了

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧