看看这个简单的代码:
struct Point {
int x;
int y;
};
void something(int *);
int main() {
Point p{1, 2};
something(&p.x);
return p.y;
}
我希望,它main
的返回值可以优化为return 2;
,因为something
无法访问p.y
,它只能获得一个指向p.x
.
main
但是,没有一个主要编译器优化to的返回值2
。神箭。
如果我们只授予访问权限,标准中是否有允许something
修改的内容?如果是,这是否取决于是否有标准布局?p.y
p.x
Point
如果我使用something(&p.y);
, 而return p.x;
不是呢?