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

发布于 2024-10-04 11:45:14 字数 205 浏览 1 评论 0原文

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

int id(int k) return k; { }

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

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

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

I accidentally put the opening brace of my function definition after the return statement

int id(int k) return k; { }

But GCC answered with a weird error message

error: named return values are no longer supported

Can anyone please explain what that weird feature might be? I've never heard about it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

浪推晚风 2024-10-11 11:45:14

请参阅此处 - 通过在函数头。

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

简短剪切和粘贴上下文:

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

A f () {
  一个一个;
  ...
  返回一个;
}

G++ 将在返回值中分配 a
值槽,这样返回就变成了
无操作。为此,所有返回
函数中的语句必须返回
相同的变量。

See here - early NRVO implementation by explicit definition of the named return value in the function header.

Native support for NRVO without this extension was added here - GCC 3.1 Release Series.

Brief cut and paste for context:

G++ now supports the "named return
value optimization": for code like

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

G++ will allocate a in the return
value slot, so that the return becomes
a no-op. For this to work, all return
statements in the function must return
the same variable.

灵芸 2024-10-11 11:45:14

//你可以看到区别,第一个给出返回错误,第二个工作正常......

#include<bits/stdc++.h>
using namespace std;

template<typename t> t sum(const t a, const t b) return a + b;

int main() {
    cout << sum<int>(1, 2);



}  

#include;
使用命名空间 std;

template<typename t> t sum(const t a, const t b) {
    return a + b;
}

int main() {
    cout << sum<int>(1, 2);


}
        
        
        

//you can see the difference first one is giving a return error and second one is working fine.....

#include<bits/stdc++.h>
using namespace std;

template<typename t> t sum(const t a, const t b) return a + b;

int main() {
    cout << sum<int>(1, 2);



}  

#include<bits/stdc++.h>
using namespace std;

template<typename t> t sum(const t a, const t b) {
    return a + b;
}

int main() {
    cout << sum<int>(1, 2);


}
        
        
        
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文