我正在浏览项目中的代码。C结构中的对齐/填充
以下是结构定义如下:
typedef struct {
ULONG gatewayIp;
UBYTE status;
UBYTE align;
UWORD info;
ULONG magicTemp;
uword stationCode;
} GatewayStatus;
我的问题是,为什么我们在上面的结构之间对准英寸
我教编译器负责对齐如下面的链接中提到的。 http://vcfaq.mvps.org/lang/11.htm
我概括我的问题,不论上述结构 下,我们有什么方案,以编程方式对齐,并会做什么场景编译器,我们呢?
如果两台机器有不同的endian类型,即一个m/c是big endian而另一个是low endian,那么是否需要填充?
请澄清我的问题。
谢谢!
这个结构来自哪个上下文?它不会发生在使用此结构的二进制转储进行I/O的库中,是吗? – Cameron 2012-04-26 06:16:37
我认为这是一个糟糕的例子,因为它与开发人员决定以这种方式定义这种结构的专用产品有关;也许单词(2字节)对齐。这与编译器的改变无关。 – 2012-04-26 06:18:49
如果所有内容都显示C,那么C++标记是什么? – 2012-04-26 06:25:08