次の簡単なコードを見てください。
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
しかし、主要なコンパイラはいずれも to の戻り値を最適化しませmain
ん2
。ゴッドボルト。
へのアクセスのみを許可する場合、標準something
に変更を許可するものはありますか? はいの場合、これは標準レイアウトがあるかどうかに依存しますか?p.y
p.x
Point
代わりにsomething(&p.y);
, andを使用するとどうなりますか?return p.x;