c语言枚举类型 枚举问题

在c语言枚举类型中枚举类型 与 int類型一样,是4个字节可以把enum类型看成特殊的int型数据

点击(此处)折叠或打开

点击(此处)折叠或打开

主流编译器如:gcc、vc、MinGW-gcc等枚举变量均为4字节少量编译器会根据枚举个数做优化,如只有3个枚举值时size可能为1。

enum长度不确定会带来可移植性问题如果第三方库API接口使用enum类型,编译和调用库时一旦有关enum长度的编译器设置不一致API接口层对数值的解析就不匹配。比如上层应用编译时没有用-fshort-enums默认用4字节空间来存储使用enum变量,而编译库时设置了fshort-enums则库内部此enum size可能为1。当把enum变量地址传进API时内部只修改变量最低字节,高3字节值无变化(内容随机)API返回时,上层使用的4字节enum变量值就可能随机(潜规则篇之API接口)

C陷阱篇之enum默认长度

我要回帖

更多关于 C语言 枚举 的文章

 

随机推荐