私は gcc を使用していくつかの C++ コードをコンパイルしています。「デバッグ」構成を使用するとコードは正常にコンパイルされますが、「リリース」構成では警告が出力されます。コンパイル オプションの唯一の違いは次のとおりです。
"デバッグ":g++ -O0 -g3 ...
"リリース":g++ -O3 ...
「リリース」ビルドに表示されるメッセージ:
../src/xml.cpp: In static member function ‘static Z<char>* XML::ReadToZ(const char*, XMLTransform*, XMLTransformData*)’:
../src/xml.cpp:5034: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result
../src/xml.cpp:5041: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result
関連する 2 つのステートメントは次のとおりです。
/* 5034 */ fread((*y).operator char *(),1,S,fp);
/* 5041 */ fread(yy.operator char *(),1,S,fp);
警告に違いがあるのはなぜですか?