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

时间:2008-12-01 15:21:38

标签: c++ c

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

myFunc()
{
  return 42;  // return type defaults to int.
}

但是,在C ++中呢?无论如何,我无法找到它的参考...

我的编译器(Codegear C ++ Builder 2007)目前在没有任何警告的情况下接受它,但我已经注意到 是C ++中的错误。

5 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:8)

隐式返回类型在C89中有效,但许多编译器都在警告它。

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

答案 2 :(得分:4)

所以,它肯定是“形成错误的”C ++,但似乎许多编译器最多只接受警告。

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

请添加/更正此列表!

答案 3 :(得分:2)

这不是合法的C ++,但有些编译器会默默接受或使用诊断。

答案 4 :(得分:1)

如发布,它是不正确的。 MSVC 8给出以下错误:

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