当前位置: 首页 > >

C语言枚举类型的大小

发布时间:

?


主流编译器如: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接口)
?


reference:


http://blog.chinaunix.net/uid-16813896-id-5014131.html


C陷阱篇之enum默认长度


https://blog.csdn.net/ipmux/article/details/17334099


?



友情链接: