c++ - 为什么有些语句在 "Release"中产生警告,而在GCC的 "Debug"模式编译中却没有?

标签 c++ gcc gcc-warning

我正在使用 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);

为什么警告会有所不同?

最佳答案

一些警告是基于“流分析”生成的,这是编译器在某些优化步骤中所做的事情。

您可能应该修复这些警告!

关于c++ - 为什么有些语句在 "Release"中产生警告,而在GCC的 "Debug"模式编译中却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14513850/

相关文章:

c++ - 附加到 CMAKE_C_FLAGS

C++ 找不到已安装的库

c++ - 修复循环变量的 -Wconversion GCC 警告

GCC 编译器选项 -wno-four-char-constants 和 -wno-multichar

c - 关于 "int"flavors 操作的疑问

c++ - 完美的转发可变参数模板,为所选类型按值传递

c++ - 如何在 QT 中将 QDialog 居中?

c++ - double Gtk::Messadialog 退出前

c - fcntl() 范围可见性行为?

macos - 无法在Mac上brew安装gcc48