e98.c

先定義後使用
/*###7 [cc] 警告: CBC:e98: 疑わしいタグですstruct XXX%%%*/
修正前 

/*	構造体のポインタを使用した後に、*/	
void    bad(struct     uso800*);
/*	構造体を定義する。		*/
struct  uso800  {		
        int     a  ;
        int     b  ;
        int     c  ;
        int     d  ;
} ;

修正案1 /* 構造体を定義した後に、 */ struct iso800 { int a ; int b ; int c ; int d ; } ; /* 構造体のポインタを使用 */ void good(struct iso800*);
修正案2 /* 一見、無意味な記述を入れる */ struct iso800; void good(struct iso800*);
解説 コンパイラが、 構造体の形を知る前に、 構造体のポインタを使用すると、 K&Rのコンパイラでは、警告は出ませんでしたが、 ANISのコンパイラでは、警告が出ます。 詳細は、 プログラミング言語C 第2版 ANSI規格準拠 カーニハン リッチー著/石田晴久訳』 「付録A.3 構造体と共用体の宣言『不完全型』」Page262C-FAQ 11.5J C-FAQ 11.5E を参照して下さい。