e69.c

ブロック外のタグ定義が隠蔽
/*###13 [cc] 警告: AAC:e69: ANSI-Cではブロック外のタグ定義が
             隠蔽されます struct XXX%%%*/
/********************************/
/*A.7 ブロック内のタグ名	*/
/********************************/

char    buf[4] ={0x12,0x34,0x56,0x78};
struct  LOOKthisTAG{char val;} ;          /*★*/
int     main()/*A.7:ブロック内のタグ名:『危険』*/
{
        struct  LOOKthisTAG;/*空の構造体を宣言*/
        struct  {
                struct  LOOKthisTAG * p ; /*※*/
        } R ;
        struct LOOKthisTAG{long val;} ;   /*☆*/
        R.p = (void *)&buf[0] ;
}


解説: 空の構造体を宣言する事で ※で使用するLOOKthisTAGを★から☆へ変更する事が出来ますが、 K&RとANSIの実行結果が異なり、危険です。 言語処理系に依存しない記述のためには、ソース修正をして, 関数内のLOOKthisTAGを別の名前にして下さい。