为什么GCC会说“不再支持命名的返回值”?
我不小心在return语句之后放置了我的函数定义的大括号
int id(int k) return k; { }
但GCC回答了一个奇怪的错误消息
错误:不再支持命名的返回值
任何人都可以请解释一下这个奇怪的function可能是什么? 我从来没有听说过。
请参阅此处 – 通过在函数头中显式定义指定的返回值来实现早期的NRVO实现。
没有这个扩展的本地支持NRVO被添加在这里 – GCC 3.1发布系列。
上下文的简短剪切和粘贴:
G ++现在支持“命名返回值优化”:代码如
A f () { A a; ... return a; }
G ++会在返回值槽中分配一个,这样返回就成为一个空操作。 为此,函数中的所有返回语句必须返回相同的variables。
看到这里
他们被删除在gcc3.4
这是一个GCC扩展 , 在GCC 3.4中删除 。