_findfirst / _findnext のハンドルの型はintptr_t




C++ でファイルリスト取得に使用する APIの _findfirst / _findnext ですが、これの使用方法のサンプルコードを見ると、ハンドルの型にintとかlongとかを使っているコードが結構多いようなのですが、正しいデータ型はintptr_t。

×
int hFile = _findfirst(filter, &c_file);


intptr_t hFile = _findfirst(filter, &c_file);

この間違いが非常に厄介でして、intptr_tの本体は

#define __int64 intptr_t

等のようになっていまして、つまりハンドルの値がint、longの範囲におさまる小さい場合は正常に動いてしまいます。

はっきりとした事情はわかりませんが、どうも昔のapiの仕様ではlongとかintでよかったのかもしれません。



スポンサーサイト

コメントの投稿

非公開コメント

カレンダー
01 | 2018/02 | 03
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 - - -
最新記事
カテゴリ
Qt (21)
SDL (2)
MFC (2)
検索フォーム
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
リンク(管理用)
FC2カウンター