我知道这条消息的含义,我只是想知道为什么会这样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(使用前将#替换为@)