相关疑难解决方法(0)

当一个具有警告"控制到达非空函数结束"的函数被调用时,实际发生了什么?

我知道这个消息意味着什么,我只是想知道为什么它不是错误消息,而只是一个警告?

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

int f()
{
}
Run Code Online (Sandbox Code Playgroud)

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

用gcc 4.1.2和4.4.3测试


编辑:阅读答案我理解一件事,阅读评论 - 另一个..

好吧,让我们总结一下:它是未定义的行为.那么,这意味着可能导致堆栈损坏,对吧?(甚至意味着,我的电脑可能会开始通过麦克风插孔把腐烂的西红柿扔到我身上,尖叫着 - "你做了什么?").

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

并且未定义?调用者,尝试使用"未返回的值",或只是函数的结尾是未定义的,如果它必须返回值,但它不是?

或者它不是未定义的行为,只是试图使用该值的用户(未返回,噢!)将"接收"未定义的?换句话说 - 只是一些垃圾价值,没有更多的事情可以发生?

c c++

12
推荐指数
2
解决办法
1075
查看次数

标签 统计

c ×1

c++ ×1