在C中,以下恐怖是有效的:
myFunc()
{
return 42; // return type defaults to int.
}
但是,在C ++中呢?无论如何,我无法找到它的参考...
我的编译器(Codegear C ++ Builder 2007)目前在没有任何警告的情况下接受它,但我已经注意到 是C ++中的错误。
答案 0 :(得分:17)
在C ++中它是格式错误的。这意味着它不能使用标准的符合编译器进行编译。标准附件C中的 7.1.5 / 4 段解释了“禁止隐含int”的变化。
答案 1 :(得分:8)
隐式返回类型在C89中有效,但许多编译器都在警告它。
它们在C ++和C99中都无效。
答案 2 :(得分:4)
所以,它肯定是“形成错误的”C ++,但似乎许多编译器最多只接受警告。
请添加/更正此列表!
答案 3 :(得分:2)
这不是合法的C ++,但有些编译器会默默接受或使用诊断。
答案 4 :(得分:1)
如发布,它是不正确的。 MSVC 8给出以下错误:
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int