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を別の名前にして下さい。