64bit

64bit IDE in Visual C++ 2005 Express Edition

64bit環境下で64bitアプリを開発するには、正式には製品版のVS2005を購入する必要があるが、設定を書き換えればExpress Editionでもある程度は可能だ。 手順は以下の通り。 install Visual C++ 2005 Express Edition install Platform SDK 「Visual C++ 2005…

変数のアライメント

構造体または変数のアライメントを設定する構文として GCCに__attribute__*1 がある。どちらも2の累乗の値を指定する。 構造体のメンバーのアライン 変数の配置の指定 が可能となっている。 GCCの場合、変数の配置の指定はアセンブラの.align擬似命令(リン…

64bit値の32bit変数への代入

warning C4244対策は、LONG_PTRをLONGに暗黙変換すると警告されるというものだが、この種の警告はいくつかあった。 64bit WindowsではLONG_PTRは64bitの整数型すなわち__int64だ。PTRという名前だからポインタかと思ったらそうではなくて、ポインタを保持で…

Windows 64-Bit Edition

How to Port Drivers to 64-Bit Windows Windows 64-Bit EditionはLLP64 int、long、DWORDは32bit size_t、ポインタ、LRESULT、WPARAM、LPARAMは64bit 少し注意が必要なのは、intは32bitだが、64bitアラインされること。struct A { int a[2]; }sizeof(struct…

warning C4244対策

これの対処方法を考えてみた。 まだまだ出るぞ、64bit移植性関連トラブル! SetWindowLongPtr APIの第3引数にLONG_PTR型を渡すと警告される!!(1) SetWindowLongPtr専用に型を定義する すぐ思いつく方法。美しくないけど、warningをゼロにする必要があるなら仕…