gpt4 book ai didi

c++ - 没有返回对局部变量的引用的编译器警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:35 24 4
gpt4 key购买 nike

使用:

g++ -Wall -ansi foo.cpp

我收到警告

foo.cpp:31: warning: reference to local variable ‘x’ returned

来自函数:

int &bar(int x) {
return x;
}

但是,从文件中删除该函数后,我没有收到来自以下函数的警告:

int &get_max(int x, int y) {
return x > y ? x : y;
}

为什么编译器允许这样做?

最佳答案

看起来像个bug,警告不一致,如果我们在gcc 5.1中开启优化它确实捕获了这种情况:

warning: function may return address of local variable [-Wreturn-local-addr]
return x > y ? x : y;
^

没有优化gcc misses it .

所以最好的办法是提交 bug report .如果他们不认为这是一个错误或不会修复它,那么至少会有其他人遇到相同问题的引用。

关于c++ - 没有返回对局部变量的引用的编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com