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

时间:2019-12-25 08:58:36

标签: 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()
{
...
}

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


在此示例中:

my_function(int);    //Prototype


int main()
{
...
}

int my_function(int x)
{
    return 4;
}

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


我在C++11 standard页192-function declaration中找不到与我想知道的事情有关的东西(或者可能只是我不理解的事实)。

能否请您说明何时可以省略 return_type ?这是一个错误吗?还是C ++的旧版本?

1 个答案:

答案 0 :(得分:14)

  

能否请您解释何时可以省略return_type?这是一个错误吗?

在常规函数原型中不能省略返回类型。您引用的资源错误地提出了其他建议。标准C ++中没有规则假定函数原型中的返回类型为int

  

还是某些旧版本的C ++?

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

但是,这再次不是标准C ++。

相关问题