Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么有些语句会在“中生成警告”;“释放”;但不在“中”;“调试”;使用GCC进行模式编译? 我使用GCC编译一些C++代码,而代码在使用“调试”配置时编译得很好,它在“发布”配置中发出警告。编译选项的唯一区别是:_C++_Gcc_Gcc Warning - Fatal编程技术网

为什么有些语句会在“中生成警告”;“释放”;但不在“中”;“调试”;使用GCC进行模式编译? 我使用GCC编译一些C++代码,而代码在使用“调试”配置时编译得很好,它在“发布”配置中发出警告。编译选项的唯一区别是:

为什么有些语句会在“中生成警告”;“释放”;但不在“中”;“调试”;使用GCC进行模式编译? 我使用GCC编译一些C++代码,而代码在使用“调试”配置时编译得很好,它在“发布”配置中发出警告。编译选项的唯一区别是:,c++,gcc,gcc-warning,C++,Gcc,Gcc Warning,“调试”:g++-O0-g3… “发布”:g++-O3… 我在“发布”版本中看到的消息: 为什么警告不同?一些警告是基于“流分析”生成的,这是编译器在某些优化步骤中执行的操作 您可能应该修复这些警告 网站上有关于这种行为的错误报告。尝试将--no warn unused result添加到您的“Release”配置文件中。为什么这很重要?检查返回值。@chris-首先,重要的是b/c我感兴趣的是真正理解这个问题,而不仅仅是绕过它。其次,这不是我的代码,而是从网上下载的一个包的一部分,所以我不愿意

“调试”:
g++-O0-g3…

“发布”:
g++-O3…

我在“发布”版本中看到的消息:


为什么警告不同?

一些警告是基于“流分析”生成的,这是编译器在某些优化步骤中执行的操作


您可能应该修复这些警告

网站上有关于这种行为的错误报告。尝试将--no warn unused result添加到您的“Release”配置文件中。

为什么这很重要?检查返回值。@chris-首先,重要的是b/c我感兴趣的是真正理解这个问题,而不仅仅是绕过它。其次,这不是我的代码,而是从网上下载的一个包的一部分,所以我不愿意更改它。这并不是真正绕过一个问题去注意一个合乎逻辑的编译器警告。如果它读不到你所期望的,你就没有办法知道。作为其他人编写的代码,他们应该努力使其健壮,并且在编译时不会发出警告。谢谢。这不是我的代码,而是从网上下载的软件包的一部分,所以我不愿意更改它。奇怪的是,这两个
fread()
调用位于
if else
语句的两个分支中,因此其中一个应该被计算(除非while
if
被优化掉,但情况似乎并非如此)。然后,紧接着在
fread()
-s之后出现
fclose()
语句。为什么在这些(或数千个未被检查的stdlib函数调用中的任何其他stdlib函数调用)上没有警告?@ysap,因为
fread
具有附加属性。你永远不知道你从输入中得到了什么,所以当你不检查时它会警告你。谢谢。哇,这太“深”了。这份报告确实把事情联系了起来。我没有深入阅读bug报告线程,但其中有一些深思熟虑的论点。使用该标志是一个坏主意。大多数有缺陷的C程序的问题是未检查的结果。您不想隐藏这些问题。
../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);