为什么我的 Cg 编译器编译一个没有 Return 语句的函数,即使它返回一个结构体?
Nov 27, 2024 am 03:36 AM在 C 中省略 Return 语句
问题:
开发人员在使用 Windows 版 g 时遇到意外行为通过草莓 Perl 获得。 g 编译器允许他们在非 void 函数中省略 return 语句,尽管该函数返回一个结构。
深入分析:
代码片段提供:
struct boundTag Box::getBound(int side) { struct boundTag retBoundTag; retBoundTag.box = this; switch (side) { // set retBoundTag.bound based on value of "side" } }
登录后复制
在这样的非 void 函数中,省略 return 语句会导致未定义的行为。 ISO C -98 标准规定:
从函数末尾流出相当于没有值的返回;这会导致返回值函数中未定义的行为。
为什么编译时没有警告?
省略 return 语句时未定义行为,某些编译器默认情况下可能不会发出警告。为了启用更彻底的警告,建议在编译时使用 -Wall 选项。
省略 Return 语句的后果
在非-中省略 return 语句void 函数可能会产生不可预测的后果。该函数可能会返回未初始化的值或导致程序崩溃。另外,在后续代码中使用返回值可能会导致意外结果。
结论
虽然 g 编译器允许在这种情况下省略 return 语句,但遵守 ISO C 标准并始终在非 void 函数中包含 return 语句至关重要。省略 return 语句可能会导致未定义的行为和不可预测的后果。
以上是为什么我的 Cg 编译器编译一个没有 Return 语句的函数,即使它返回一个结构体?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)