###
11 構造体/共用体アライメントとバイトオーダー

デフォルトでは、StructureとUnionのフィールドはCコンパイラが行うのと同じ方法で アライメントされています。サブクラスを定義するときに`_pack_`クラス属性を 指定することでこの動作を変えることは可能です。 このクラス属性には正の整数を設定する必要があり、フィールドの最大アライメントを指定します。 これはMSVCで`#pragma pack(n)`が行っていること同じです。

`ctypes`はStructureとUnionに対してネイティブのバイトオーダーを使います。 ネイティブではないバイトオーダーの構造体を作成するには、BigEndianStructure、 LittleEndianStructure、BigEndianUnionおよびLittleEndianUnionベースクラスの中の一つを 使います。これらのクラスにポインタフィールドを持たせることはできません。