Windows SDK でコンパイルされる次のコードがあります。
UINT cFiles = DragQueryFileW(hDrop, 0xFFFFFFFF, NULL, 0);
DragQueryFileW()
この署名はどこにありますか:
UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT );
そして、UINT
次のように SDK ヘッダーのどこかに定義されています。
typedef unsigned int UINT;
int
確かに32ビットのプラットフォーム向け。いつものように、 のような型UINT
は、システムのビット数に依存しない固定幅を持つことを意図しているため、同じコードを他のプラットフォームで再コンパイルする必要がある場合は、DragQueryFileW()
何らかの形で再実装され、適切typedef
なUINT
32-ビット符号なしタイプ。
現在、定数を見て、それは移植できないマジック番号であり、代わりに使用する必要0xFFFFFFFF
があると不平を言う静的分析ツールがあります。もちろん、移植性は良好ですが、移植する場合でも型は 32 ビットのままで、定数は問題ないため、ここで定数を使用することがどのように問題になるかわかりません。-1
-1
0xFFFFFFFF
このシナリオでは、すべてのビットを安全かつポータブルに設定する0xFFFFFFFF
代わりに使用していますか?-1