0

この線

std::unique_ptr<PHYSFS_sint64> myBuf(new PHYSFS_sint64[PHYSFS_fileLength(myfile)]);

警告を生成します

warning C4244: 'initializing' : conversion from 'PHYSFS_sint64' to 'unsigned int', possible loss of data

PHYSFS_sint64のtypedefですsinged long long

PHYSFS_fileLengthを返しますPHYSFS_sint64

だから、コンパイラが aを aに代入しようとしたときにからsigned long longに変換しようとする理由がわかりません。unsigned intsigned long longsigned long long

signed long long代わりに明示的に入力するPHYSFS_sint64と、同じ警告が出力されます

私は今、愚かですか?理解できません

4

2 に答える 2

0

ここに問題があります[PHYSFS_fileLength(myfile)]...

インデックス(または配列のサイズ)として使用しています。インデックス、サイズは符号なしです。通常(すべてのケースについて確信が持てないため、通常と言いました)、インデックスsize_tはプラットフォームに依存しますが、常にunsigned

于 2015-12-14T14:22:30.427 に答える