我正在使用 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
相关的两个语句是:
/* 5034 */ fread((*y).operator char *(),1,S,fp);
/* 5041 */ fread(yy.operator char *(),1,S,fp);
为什么警告有区别?