2014年5月25日日曜日

#pragma packのメモ

構造体のアライメントがずれるから、#pragma packとやらを試した時のメモ。 gccでは使えるみたいだが、他のコンパイラはよくわからない。 Cは普段ほぼ使わないから難しく感じる。。
#include 

#pragma pack(push, 2)
struct s1 {
 char a[1];
 int b;
};

#pragma pack(pop)
struct s2 {
 char a[1];
 int b;
};

#pragma pack(1)
struct s3 {
 char a[1];
 int b;
};

int main() {

 printf("%d\n", sizeof(struct s1));
 printf("%d\n", sizeof(struct s2));
 printf("%d\n", sizeof(struct s3));

 return 0;
}

Syntax Highlightのバグ?でなんか最終行がおかしい・・

このコード動かすと次の結果になった。
6
8
5

eclipseにCDT入れて試すほうが苦労した・・。
build後に実行しても結果が表示されなかった。
cygwinを使う設定でプロジェクト作った環境だったのに、
結局Runの設定でcygwinのbinのパスを追加したら解決。