c++ - 这段 C++ 代码如何在没有 end return 语句的情况下编译?

标签 c++ visual-studio-2005

我遇到了以下编译良好的代码(使用 Visual Studio 2005):

SomeObject SomeClass::getSomeThing()
{
    for each (SomeObject something in someMemberCollection)
    {
        if ( something.data == 0 )
        {
            return something;
        }
    }
    // No return statement here
}

如果方法末尾没有 return 语句,为什么会编译通过?

最佳答案

这是为了支持与 C 的向后兼容性,C 并不严格要求从所有函数返回。在那些情况下,您只剩下返回位置(堆栈或寄存器)中的最后一个值。

如果这是在没有警告的情况下编译,尽管您可能没有将错误级别设置得足够高。大多数编译器现在都会对此发出警告。

关于c++ - 这段 C++ 代码如何在没有 end return 语句的情况下编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400954/

相关文章:

c++ - 尝试针对旧的 STD 库和 Windows SDK 进行编译时出现链接错误

c++ - 是否可以将 vb.net 源代码转换为 C++?

c++ - 如何隐藏 QFileSystemModel 中的特定目录

c++ - 一个 makefile 编译指定目录下的所有源代码

c++ - 帮助我开始(流量操纵)

c++ - 编译器错误 : Function call with parameters that may be unsafe

windows - VS 2005 安装问题

c# - 计算通用对象列表的标准偏差

c++ - 由于源文件中存在未执行的代码而在运行应用程序时崩溃 - C++

c++ - 在运行时删除持有 pthread 的变量