53

次の簡単なコードを見てください。

struct Point {
    int x;
    int y;
};

void something(int *);

int main() {
    Point p{1, 2};

    something(&p.x);

    return p.y;
}

へのアクセス権がないため、 へのポインタのみを取得するため、mainの戻り値は に最適化できると思います。return 2;somethingp.yp.x

しかし、主要なコンパイラはいずれも to の戻り値を最適化しませmain2ゴッドボルト

へのアクセスのみを許可する場合、標準somethingに変更を許可するものはありますか? はいの場合、これは標準レイアウトがあるかどうかに依存しますか?p.yp.xPoint

代わりにsomething(&p.y);, andを使用するとどうなりますか?return p.x;

4

1 に答える 1