/* PRISM54_HOSTAPD ioctl() cmd: */
enum {
PRISM2_SET_ENCRYPTION = 6,
PRISM2_HOSTAPD_SET_GENERIC_ELEMENT = 12,
PRISM2_HOSTAPD_MLME = 13,
PRISM2_HOSTAPD_SCAN_REQ = 14,
};
这种枚举有什么作用?
那是不是有没有enum这个外层都无所谓?
追答绝对不是的!
首先,这几个常量是拥有一个完整逻辑的概念的东西,它们联合起来相对完整地描述一个事情的度量;
其次,需要考虑今后的变更/维护,再次新增一个量的时候,它与已经存在的量需要相互参照的,不能够Conflicit,逻辑层面上应该是一致的;
其实无论如何,哪怕用不着,最好这样子来定义enum:
typedef enum
{
........
PRISM2_SET_ENCRYPTION = 6,
........
} ENUM_TYPE_T;
这样子就产生一个新的Data Type了,可以定义它的变量,变量本身受约束于枚举内容的定义。
供参考。
那我问的这个根本没有枚举名和变量名,它有什么意义?其他量如何用它呢?(老师让读的程序中有这段)若没意义的话,去掉可以吗?
那这种无名枚举有什么作用?不用可以吗?
追答用名的枚举相当于告诉你,以下枚举的变量属于哪个种类,比如枚举了星期一到星期日,然后给枚举一个名称星期,这样就告诉你枚举变量的都是星期几。可读性好点而已。不用名称也可以,可读性差点而已。不用枚举,就用#define吧。说到底其实跟define意思差不多,define要每个写值,枚举不用。
追问那我问的这个根本没有枚举名和变量名,它有什么意义,去掉可以吗?其他量如何用它呢?(老师让读的程序中有这段)。
追答/* PRISM54_HOSTAPD ioctl() cmd: */
enum {
PRISM2_SET_ENCRYPTION = 6,
PRISM2_HOSTAPD_SET_GENERIC_ELEMENT = 12,
PRISM2_HOSTAPD_MLME = 13,
PRISM2_HOSTAPD_SCAN_REQ = 14,
};
int cmd;
cmd = PRISM2_HOSTAPD_SET_GENERIC_ELEMENT;//这样写可以更清楚自己表达的意思。
等价于
cmd = 12;
但你说的cmd并不是枚举变量啊,,,为什么还可以用到枚举里的呢?
那是不是有没有enum这个外层都无所谓?
追答有啊,如果是一定定义10个或者更多个相关系的,譬如都是一个switch中的case条件。
就要用enum比define要好了
这个enum根本没有变量,之后如何用它?