access23.c
来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 81 行
C
81 行
// { dg-do assemble }// PRMS Id: 9127// Bug: members of anonymous unions are not access-controlled.#include <stdio.h>struct Foo {public: union { long A; void *pX; }; union X { long A; void *pX; } PUB ; int PUB_A;protected: union { long B; // { dg-error "" } protected void *pY; // { dg-error "" } protected } ; union Y { long B; void *pY; } PRT; // { dg-error "" } protected int PRT_A; // { dg-error "" } protectedprivate: union { long C; // { dg-error "" } private void *pZ; // { dg-error "" } private }; union Z { long C; void *pZ; } PRV; // { dg-error "" } private int PRV_A; // { dg-error "" } private};struct Bar : public Foo {public: void DoSomething() { PUB_A = 0; Foo::A = 0; printf("%x\n",pX); Foo::PUB.A = 0; printf("%x\n",PUB.pX); B = 0; printf("%x\n",Foo::pY); PRT_A = 0; PRT.B = 0; printf("%x\n",Foo::PRT.pY); PRV_A = 0; // { dg-error "" } Foo::C = 0; // { dg-error "" } printf("%x\n",pZ); // { dg-error "" } Foo::PRV.C = 0; // { dg-error "" } printf("%x\n",PRV.pZ); // { dg-error "" } }};int main(){ Foo a; a.PUB_A = 0; a.A = 0; printf("%x\n",a.pX); a.PRT_A = 0; // { dg-error "" } a.B = 0; // { dg-error "" } printf("%x\n",a.pY); // { dg-error "" } a.PRV_A = 0; // { dg-error "" } a.C = 0; // { dg-error "" } printf("%x\n",a.pZ); // { dg-error "" } a.PUB.A = 0; printf("%x\n",a.PUB.pX); a.PRT.B = 0; // { dg-error "" } printf("%x\n",a.PRT.pY); // { dg-error "" } a.PRV.C = 0; // { dg-error "" } printf("%x\n",a.PRV.pZ); // { dg-error "" } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?