【问题标题】: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++ 中的错误。

【问题讨论】:

  • 那是哪个编译器?我从来没有遇到过接受它的人。

标签: c++ 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
        

        【讨论】:

          猜你喜欢
          • 2011-10-25
          • 2021-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-06
          • 2023-03-14
          • 1970-01-01
          相关资源
          最近更新 更多