我知道这个消息意味着什么,我只是想知道为什么它不是错误消息,而只是一个警告?
在这种情况下会发生什么?例如,假设我有一个功能
int f()
{
}
Run Code Online (Sandbox Code Playgroud)
当我打电话时会发生什么?在这种情况下
,编译器是否添加"非初始化"的返回int?
或者丢失的返回可能导致堆栈损坏?
或者(绝对)未定义的行为?
用gcc 4.1.2和4.4.3测试
编辑:阅读答案我理解一件事,阅读评论 - 另一个..
好吧,让我们总结一下:它是未定义的行为.那么,这意味着可能导致堆栈损坏,对吧?(甚至意味着,我的电脑可能会开始通过麦克风插孔把腐烂的西红柿扔到我身上,尖叫着 - "你做了什么?").
但如果是这样,那么为什么这里的最佳答案说,堆栈损坏不会发生,同时,行为是未定义的?
并且未定义?调用者,尝试使用"未返回的值",或只是函数的结尾是未定义的,如果它必须返回值,但它不是?
或者它不是未定义的行为,只是试图使用该值的用户(未返回,噢!)将"接收"未定义的值?换句话说 - 只是一些垃圾价值,没有更多的事情可以发生?