当调用带有警告“控制到达非空函数末尾”的函数时(实际上)会发生什么?

2024-05-04

我知道这条消息的含义,我只是想知道为什么会这样not一条错误消息,但只是一个警告?

在这种情况下会发生什么?例如,假设我有一个函数

int f()
{
}

当我调用它时会发生什么?
编译器是否添加了“未初始化”的返回int在这种情况下?
或者丢失的返回可能会导致堆栈损坏?
或者它(绝对)未定义的行为 ?

Tested with gcc 4.1.2 and 4.4.3


EDIT:阅读答案我明白一件事,阅读评论 - 另一件事......

好吧,我们总结一下:就是未定义的行为。那么,这意味着,它是possible导致堆栈损坏,对吗? (这甚至意味着,我的电脑可能会开始通过麦克风插孔向我扔烂番茄,尖叫 - “你做了什么???”)。

但如果是这样,那么为什么这里的最高答案说,堆栈损坏不会发生,同时行为是未定义的?

以及未定义的方面?调用者尝试使用“未返回值”,或者只是函数的结尾未定义,如果它必须返回值,但它没有?

或者这不是未定义的行为,而只是尝试使用该值(未返回,d'oh!)的用户将“接收”未定义value?换句话说——只是一些垃圾值,就不会发生更多的事情了?


答:不会,缺少返回值不会导致堆栈损坏

答:是的,如果调用者尝试读取和/或使用(未定义!)返回值,则行为将是“未定义”。

PS:

这是对 C++ 的引用:

C++03 §6.6.3/2:

从函数末尾流出相当于没有返回 价值;这会导致返回值的未定义行为 功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当调用带有警告“控制到达非空函数末尾”的函数时(实际上)会发生什么? 的相关文章

随机推荐

  • Firebase BigQuery 导出 - 历史数据

    当我尝试在 BigQuery 上搜索事件的历史数据时 我只能找到上周的事件 我无法在任何地方找到信息是否正确 或者我做错了什么 基本上我似乎只能查询过去一周的 events YYYYMMDD 它是否正确 您是否有机会在一周前从 Fireba
  • 如何找到 Rails 中的当前路线?

    我需要知道 Rails 中过滤器中的当前路线 我怎样才能知道它是什么 我正在处理 REST 资源 但没有看到命名路由 如果您尝试对视图中的某些内容进行特殊处理 您可以使用current page as in 或者一个动作和ID 或命名路线
  • 使用 PHP 将图像中的一种颜色替换为另一种颜色

    有人可以帮我编写一个简单的脚本 使用 PHP 将图像中的特定颜色替换为另一种颜色吗 这是一个示例 颜色从绿色变为黄色 如果你的意思是在 PHP 中使用 GD 库 你应该检查一下图像过滤器 http php net manual en fun
  • Chart.JS 工具提示回调标签和标题 (v3.5)

    请注意 v2 有很多答案 这是 v3 的 我正在尝试设置工具提示label and title对于圆环图 Code Create the donut chart donut new Chart questions positivity do
  • 为一列中的多行生成不同的随机数

    我得到了一列带有整数值 n 行 的列 我想生成满足特定条件的值的正态分布范围内的随机数 我尝试使用下面的代码 但它们太慢了 df members bd df members bd apply lambda x np random norma
  • Typescript,返回元组的通用可变参数工厂函数

    在打字稿中 可以像这样创建工厂函数 并定义返回类型 function factory1
  • 如何从实体框架获取模式名称?

    我有以下代码 using WdmEntities context new WdmEntities get object models from context ObjectContext objContext IObjectContextA
  • 为什么我的 FPS 相机一劳永逸地滚动?

    如果我忽略四元数代数的肮脏细节 我想我理解了旋转和平移变换背后的数学 但仍然不明白我做错了什么 为什么我的相机一劳永逸地滚动 更具体地说 我应该如何从相机的方向 旋转矩阵 计算相机视图矩阵 我正在用 Python 编写一个简约的 3d 引擎
  • 在不可为空的列中忽略默认值

    我正在尝试使用以下 SQL alchemy 脚本在表中创建一个新的布尔型 不可空列 默认值 True from sqlalchemy import MetaData Table Boolean Column def upgrade migr
  • C# - 具有属性和节点值的 Xml 元素

    我有一些需要反序列化为对象的 Xml XML 是
  • 提交登录表单后关闭 Fancybox 模式窗口并重新加载页面

    我在 FancyBox 2 模式 iframe 窗口中打开了一个登录表单 但是 当您提交表单时 网页将在模式中打开 谁能告诉我是否以及如何使 Fancybox 模式关闭 并在提交登录表单时重新加载底层页面 这是我当前的代码 在functio
  • 计算 python 字典/数组数据结构的非空尾叶 - 递归算法?

    我正在寻找一个函数来查找一种复杂字典 数组结构的所有非空端点 我认为因为我不知道嵌套数组的数量或它们的位置 所以它必须是递归的 而我只是还没有完全理解这种思维方式 所以对于嵌套字典 x top middle nested value nes
  • IntelliJ 2017.1.2 GOLANG 调试不适用于包中的断点

    我的应用程序由一个 main go 文件和一些包组成 当在 main go 中命中断点时 IntelliJ 按预期工作 显示变量值等 但是 当在不同的包中设置断点时 除了被命中之外 不会显示任何变量 并且不会跳过 进入功能按预期工作 被击中
  • Android 设备有方形屏幕吗?

    我正在为 Android 编写一个游戏 我自己布局游戏屏幕 处理垂直和水平方向 如果宽度和高度相同 则没有做任何事情 有人知道至少有一款 Android 设备具有完美的方形屏幕分辨率吗 The MotoACTV https motoactv
  • Keras 中的 model.fit() 和 model.evaluate() 有什么区别?

    我使用 Keras 和 TensorFlow 后端来训练 CNN 模型 之间是什么model fit and model evaluate 我应该最好使用哪一种 我在用model fit 截至目前 我知道的用处model fit and m
  • 在猫鼬的整个应用程序中共享数据库连接

    使用最新的 mongoose 更新 您不能再像我以前那样进行用户建模 我需要在整个应用程序中共享相同的数据库连接 https github com LearnBoost mongoose issues 1249 https github c
  • 按位置对 MultiIndex pandas DataFrame 进行切片

    我目前正在尝试按位置对具有三个级别的多索引数据帧进行切片 我正在使用熊猫 19 1 Level0 Level1 Level2 Value 03 00368 A Item111 6 9 03 00368 A Item333 19 2 03 0
  • d3.js 中拖动后(有时)单击事件未触发

    观察到的行为 我正在使用 d3 js 并且我想根据以下情况更新一些数据drag https github com mbostock d3 wiki Drag Behavior wiki on事件 并重绘事件之后的所有内容dragend ht
  • iOS:不明确的属性合成行为。继承相关

    我在用着AppCode它标记了一个非常大的项目代码中的一个有趣的情况 预ARC 子类定义并合成一个称为委托的属性 实际上属性声明已经被注释掉了 但是 synthesize delegate delegate 声明被留下了 该代码可以编译 大
  • 当调用带有警告“控制到达非空函数末尾”的函数时(实际上)会发生什么?

    我知道这条消息的含义 我只是想知道为什么会这样not一条错误消息 但只是一个警告 在这种情况下会发生什么 例如 假设我有一个函数 int f 当我调用它时会发生什么 编译器是否添加了 未初始化 的返回int在这种情况下 或者丢失的返回可能会