首页 > 后端开发 > C++ > 为什么我的非 Void C 函数不返回值不会产生编译器错误?

为什么我的非 Void C 函数不返回值不会产生编译器错误?

Susan Sarandon
发布: 2024-12-16 08:27:14
原创
962 人浏览过

Why Doesn't My Non-Void C   Function Returning No Value Produce a Compiler Error?

C 代码中非 Void 函数不返回值

问题:

下面的 C 代码有一个不返回值的非 void 函数:

static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out)
{
    tvec3::Min(a,b,out);
    out.w = min(a.w,b.w);
}
登录后复制

为什么编译时没有错误?

答案:

根据 C 11 草案标准第 6.6.3 节第 2 节,此行为未定义,其中规定从 a 的末尾流出返回值的函数会导致未定义的行为。

编译器警告和错误:

  • gcc 和 clang: 可以使用 -Wall 标志生成警告(警告:控制到达非 void 函数的末尾 [-Wreturn-type] )。可以使用 -Werror=return-type 标志将其转换为错误。
  • Visual Studio: 默认情况下生成错误 C4716('Min':必须返回值)或警告C4715 如果不是所有代码路径都返回值。

含义:

未定义的行为可能会导致不可预测的结果,包括程序崩溃。建议使用 -Wall 和 -Wextra 等编译器选项来检测和修复未定义行为的实例。

以上是为什么我的非 Void C 函数不返回值不会产生编译器错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板