我正在瀏覽項目中的代碼。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