2005-12 / 2005-12-08

前のエントリ: 今日の戦利品 [ぬいぐるみ]
次のエントリ: (C++)メンバ関数のポインタでエラー [c]

構造体のパディングをつめる
2005-12-08-1 / カテゴリ: [programming][c] / [permlink]

「pack プラグマ」を使う

[2005-12-04-1]の続き
struct fromdata {
  unsigned char first;
  unsigned char second;
  unsigned char third;
};

#pragma pack(push, 1)
struct todata {
  unsigned first: 6;
  unsigned second: 6;
  unsigned third: 6;
  unsigned forth: 6;
};
#pragma pack(pop)
(以下略)
これで結果が
from: 3
to: 3
になった。

#pragma pack(n)
これで、それ以降の構造体・共用体のパディングに適用される
#pragma pack(push, n)
#pragma pack(pop)
(push,n)で、以降の構造体・共用体のパディングを n を基準にし、(pop)で元にもどす

テストコード書いてみたが、エンディアン関係??でサクっとは base64 変換できねぇ...(@Intel pentium M)
前のエントリ: 今日の戦利品 [ぬいぐるみ]
次のエントリ: (C++)メンバ関数のポインタでエラー [c]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12