VS2013的奇怪行为

qingjinlyc

最近,我在发布模式下崩溃,而在调试模式下却无法正常运行。

通过深入检查我的代码,我发现我忘记return true了函数的结尾,这会导致崩溃。如果失败,该函数应返回false,否则返回true。

我在徘徊这是否是编译器的缺陷(与2013年相比),因为它(也许)为我return true在函数末尾添加了该语句,但是在发布时却没有。因此,程序员应该花很多时间来调试故障,尽管程序员应该对此负责。

:)

戴维·哈门(David Hammen)

从应该返回值的函数的末尾流出是未定义的行为。未定义的行为意味着编译器可以执行任何操作并且仍然合规。发出警告消息是合规的。不发出警告消息是合规的。擦除硬盘驱动器:这也符合要求。对我来说幸运的是,这还没有发生。我经历了很多次调用未定义行为的不幸。

这是未定义行为的一个原因是,在某些奇怪的情况下,流分析无法确定函数是否返回值。另一个原因是,您可能已经使用汇编程序以一种可以在计算机上正常工作的方式来设置返回值。第三个原因是编译器必须进行流量分析才能确定。除非启用优化,否则许多编译器不会这样做。

也就是说,在右括号之前缺少返回值通常会触发编译器检查函数是否返回值。编译器发出警告时对您很好。

您收到警告消息并忽略了它-绝对不要那样做。使用设置为较高级别的标志进行编译,并处理每个警告。代码应始终编译干净。总是。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

模板类VS2013的异常行为

来自分类Dev

<filesystem>在VS2013与VS2012中的不同行为

来自分类Dev

奇怪的VS2013错误?还是程序员诱发疾病?

来自分类Dev

打字稿VS2013

来自分类Dev

XAML项目的Blend和VS2013中缺少行为,但Javascript项目中存在行为

来自分类Dev

const vs #define(奇怪的行为)

来自分类Dev

具有rvalue引用参数的模板赋值运算符与vs2013和gcc的行为不同

来自分类Dev

VS2013:Git和TFS混淆

来自分类Dev

VS2013上的SFINAE错误?

来自分类Dev

VS2013中的类型特征

来自分类Dev

avformat.lib和VS2013

来自分类Dev

使用NuGet的VS2013 Boost

来自分类Dev

MSTest运行忽略的测试(VS2013)

来自分类Dev

在VS2013中定义宏的位置

来自分类Dev

如何修复PreEmptive Dotfuscator(VS2013)?

来自分类Dev

在VS2013中构建Boost库

来自分类Dev

VS2013中HTMLhelp的替代方法

来自分类Dev

VS2013中的类型特征

来自分类Dev

VS2013与Ubuntu C ++之间的区别

来自分类Dev

在VS2013中禁用远程调试?

来自分类Dev

VS2013中的MOC文件生成

来自分类Dev

动画表达混合VS2013

来自分类Dev

项目依赖顺序-VS2013

来自分类Dev

使用VS2013找不到VersionControlExt

来自分类Dev

VS2013 Git源代码管理

来自分类Dev

如何从 VS2013 断开 VSTS

来自分类Dev

从VS2012迁移到VS2013或VS 2015

来自分类Dev

vs2013 stardard创建的vs2013 rc开放项目

来自分类Dev

VS2013 / TFS2013查询审阅者