省略函数原型中的返回类型

Căt*_*rbu 4 c++ function function-prototypes

来自 C++ 学院文档(在线课程):

return_type 描述了函数返回(传递)的结果类型(例如,我们期望正弦函数将返回一个 float 类型的值,因为 int 数据在这种情况下完全不可用);您可以使用任何 C++ 类型作为 return_type,包括一个名为 void 的非常特殊的类型;void 类型的函数根本不返回任何结果;可以说,这样的函数可能有效果,但肯定没有结果;如果省略 return_type,则编译器假定该函数返回 int 类型的值

关于这个例子 return_type function_name (parameters_list);


在这个例子中:

my_function(int x) {
    return 4;
}

int main()
{
...
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: ISO C++ forbids declaration of 'my_function' with no type [-fpermissive]|


在这个例子中:

my_function(int);    //Prototype


int main()
{
...
}

int my_function(int x)
{
    return 4;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:expected constructor, destructor, or type conversion before ';' token


我没有在C++11 标准第 192 页找到-function declaration与我想知道的有关的东西(或者可能只是我不明白的事实)。

你能解释一下什么时候可以省略return_type吗?这是一个错误吗?或者是一些旧版本的C++?

Sto*_*ica 14

你能解释一下什么时候可以省略 return_type 吗?这是一个错误吗?

在常规函数原型中不能省略返回类型。你引用的资源是非常错误的建议否则。标准 C++ 中没有任何规则假设int函数原型中的返回类型。

或者是一些旧版本的C++?

不是 C++。C++ 不允许省略返回类型。但是预先标准化的 C (K&R C) 确实允许它并且有一个“隐式 int”规则。因此,一些编译器提供了与一些非常旧的 C 代码兼容的扩展。

但同样,这不是,也从来都不是,标准的 C++。