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++错误类的语法错误 error c2533:constructors not allowed a return type(构造函数不允许返回一个类型)