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なUINT32-ビット符号なしタイプ。
現在、定数を見て、それは移植できないマジック番号であり、代わりに使用する必要0xFFFFFFFFがあると不平を言う静的分析ツールがあります。もちろん、移植性は良好ですが、移植する場合でも型は 32 ビットのままで、定数は問題ないため、ここで定数を使用することがどのように問題になるかわかりません。-1-10xFFFFFFFF
このシナリオでは、すべてのビットを安全かつポータブルに設定する0xFFFFFFFF代わりに使用していますか?-1