C++ 是不是允许函数的默认返回类型?

Posted

技术标签:

【中文标题】C++ 是不是允许函数的默认返回类型?【英文标题】:Does C++ allow default return types for functions?C++ 是否允许函数的默认返回类型? 【发布时间】:2008-12-01 15:21:38 【问题描述】:

在 C 中,以下恐怖是有效的:

myFunc()

  return 42;  // return type defaults to int.

但是,在 C++ 中呢?无论哪种方式,我都找不到对它的引用...

我的编译器 (Codegear C++Builder 2007) 目前在没有警告的情况下接受它,但我有 cmets 这在 C++ 中的错误。

【问题讨论】:

那是哪个编译器?我从来没有遇到过接受它的人。 【参考方案1】:

它在 C++ 中是格式错误的。这意味着它不能使用符合标准的编译器进行编译。标准附件 C 中的第 7.1.5/4 段解释了“禁止隐式 int”的更改。

【讨论】:

例如,如果您使用 g++ 编译,请确保有 -W -Wall 标志以显示警告,或 -pedantic 将其作为错误。 你在走C/C++标准的百科全书:) 伊利亚,我希望我是。我只是拥有它的副本嘿嘿:)【参考方案2】:

隐式返回类型在 C89 中有效,但许多编译器对此提出警告。

它们在 C++ 和 C99 中无效。

【讨论】:

【参考方案3】:

所以,它绝对是“格式错误”的 C++,但似乎许多编译器接受它时充其量只是一个警告。

Codegear C++Builder 2007:完全没有错误或警告 G++:需要 -W -Wall 来生成警告,或 -pedantic 来生成错误 (Piotr) MSVC 8:产生错误 (tfinniga) 其他...?

请添加/更正此列表!

【讨论】:

【参考方案4】:

这不是合法的 C++,但一些编译器会默默地接受它,或者通过诊断接受它。

【讨论】:

【参考方案5】:

正如发布的那样,它的格式不正确。 MSVC 8 给出以下错误:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

【讨论】:

以上是关于C++ 是不是允许函数的默认返回类型?的主要内容,如果未能解决你的问题,请参考以下文章

什么是C++重载?

c++错误类的语法错误 error c2533:constructors not allowed a return type(构造函数不允许返回一个类型)

c++中两个函数函数名相同,参数类型和参数个数也相同,但是函数类型不同,那它们是重载函数吗?

C:函数 注意点

C++的默认构造函数与构造函数

变量存储类型(auto static extern)