代码之家  ›  专栏  ›  技术社区  ›  Johannes Schaub - litb

为什么GCC说“命名返回值不再受支持”?

  •  36
  • Johannes Schaub - litb  · 技术社区  · 14 年前

    我不小心把函数定义的左大括号放在了return语句之后

    int id(int k) return k; { }
    

    但是GCC用一个奇怪的错误消息来回答

    错误:已命名的返回值不再受支持

    有人能解释一下这个奇怪的功能是什么吗?我从没听说过。

    3 回复  |  直到 13 年前
        1
  •  39
  •   Josh Lee ZZ Coder    14 年前

    here -通过在函数头中显式定义命名返回值来实现早期NRVO。

    添加了对不带此扩展名的NRVO的本机支持 here -GCC 3.1发布系列。

    上下文的简短剪切和粘贴:

    G++现在支持“命名返回 “值优化”:用于类似代码

    A f () {
      A a;
      ...
      return a;
    }
    

    G++将在返回中分配 值槽,使返回成为 禁止行动。要想成功,所有人都要回来 函数中的语句必须返回 相同的变量。

        2
  •  4
  •   The Archetypal Paul    14 年前
        3
  •  2
  •   Hasturkun    14 年前