e195.c
期待する引数が来ない




/*###8 [cc] 警告: CBC:e195(1): おそらく期待する引数は来ないでしょう .%%%*/
/*###8 [cc] 警告: CBC:e195(2): この定義の有効範囲はここだけです%%%*/
/*###8 [cc] 警告: CBC:e195(3): 関数の引数部でstruct stagを定義%%%*/
修正前
/* 構造体のポインタを使用した後に、*/
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規格準拠
カーニハン リッチー著/石田晴久訳』
「付録A8.3 構造体と共用体の宣言」Page262
か
C-FAQ 11.5J
C-FAQ 11.5E
を参照して下さい。