没有合适的资源?快使用搜索试试~ 我知道了~
各种C编译器中枚举类型大小问题
4星 · 超过85%的资源 需积分: 43 87 下载量 97 浏览量
2008-01-17
13:38:05
上传
评论 2
收藏 25KB DOC 举报
温馨提示
试读
2页
个人积累的资料,别人也许会用到。这是在不同编译器中编译时,我曾经遇到的问题!
资源推荐
资源详情
资源评论
各种 C 编译器中枚举类型大小问题- -
VC,C++ Builder 和 lcc 三个编译器 间枚举类型 enum 长度的情况.
各种 C 编译器默认的字节对齐数不一致,要写通用的代码,经常就是使用
#pragma pack(1)
...
#pragma pack()
来使编译器以单字节对齐.
今天在 bcb5 中调用 vc6 的 dll 时出现错误,但在 VC 中调用 dll 却很正常,说明很有可能是编
译器之间的差异造成.仔细 debug 后发现 bcb 和 vc 的枚举类型长度不一样,即便使用了
#pragma pack(1)编译开关.
如以下程序:
/*---------------------*/
#pragma pack(1)
typedef enum {
ENUMITEM1=0,
ENUMITEM2,
ENUMITEM3
} ENUM;
#pragma pack()
ENUM mENUM;
sizeof(mENUM);
/*---------------------*/
在 VC6 和 LCC3.3 中为四字节,而在 BCB 中即为 1 字节.再试以下程序
/*---------------------*/
#pragma pack(4)
typedef enum {
ENUMITEM1=0,
ENUMITEM2,
ENUMITEM3
} ENUM;
#pragma pack()
ENUM mENUM;
sizeof(mENUM);
资源评论
- reedzhang2014-02-17非常感谢分享,学习了。
- MiYccc2011-11-05谢谢 对于各个变量的大小 有了进一步了解
napster810427
- 粉丝: 0
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功