我知道这条消息是什么意思,我只是想知道为什么它不是错误消息,而只是警告?
在这种情况下会发生什么?例如,假设我有一个函数
int f()
{
}
当我调用它时会发生什么?
在这种情况下,编译器是否添加了“未初始化”的返回int
?
或者缺少返回可能导致堆栈损坏?
还是(绝对)未定义的行为?
使用 gcc 4.1.2 和 4.4.3 测试
编辑:阅读我理解一件事的答案,阅读评论 - 另一个..
好的,让我们总结一下:这是未定义的行为。那么,这意味着有可能导致堆栈损坏,对吗?(这甚至意味着,我的电脑可能会开始通过麦克风插孔向我扔烂番茄,尖叫——“你做了什么???”)。
但如果是这样,那么为什么这里的最高答案说,堆栈损坏不会发生,同时,行为是未定义的?
和未定义的?尝试使用“未返回值”的调用者,或者只是函数的结尾未定义,如果它必须返回值,但它没有?
或者这不是未定义的行为,而只是尝试使用该值(未返回,d'oh!)的用户将“接收”未定义的值?换句话说 - 只是一些垃圾价值,不会发生更多的事情吗?