【问题标题】:Omit return type in function prototype在函数原型中省略返回类型
【发布时间】:2019-12-25 08:58:36
【问题描述】:

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

return_type 描述了函数返回(传递)的结果类型(例如,我们期望 sine 函数将返回一个 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++?

【问题讨论】:

    标签: c++ function function-prototypes


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-05-25
      • 2018-10-19
      • 1970-01-01
      • 2021-02-05
      • 2012-09-21
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 2019-05-26
      相关资源
      最近更新 更多