スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

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




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

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


intptr_t hFile = _findfirst(filter, &c_file);

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

#define __int64 intptr_t

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

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



スポンサーサイト

コメントの投稿

非公開コメント

カレンダー
10 | 2017/11 | 12
- - - 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 29 30 - -
最新記事
カテゴリ
Qt (21)
SDL (2)
MFC (2)
検索フォーム
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
リンク(管理用)
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。