【发布时间】:2010-08-24 14:30:08
【问题描述】:
完全披露 - 这是家庭作业,虽然已完成且完全可以工作,但我正在寻找更好的解决方案。
我有一个二进制文件,它是由在 Visual Studio 中编译的程序创建的(我相信)。结构看起来像这样。
结构记录{ 字符 c; 双 d; time_t t; };在装有 Visual Studio 2008 的 Windows 上,此结构的大小为 24 个字节。 1 + 8 + 8 = 24。所以有一些填充正在进行。 Linux 和 gcc 上的相同结构提供 16 个字节。 1 + 8 + 4 = 16。为了对齐,我添加了一些填充并将time_t 更改为另一种类型。那么我的结构看起来像这样。
这现在可以工作了,gcc 将其大小设为 24 字节,但看起来有点脏。所以两个问题..
为什么这两个编译器的实现方式不同?
是否有任何__attribute__ ((aligned))-type 选项或任何其他更清洁的解决方案?
【问题讨论】:
-
你在 gcc 中使用了“-malign-double”吗?阅读:stackoverflow.com/questions/2457182/…
标签: c++ visual-studio gcc binary struct