e22.c

static関数宣言を追加して下さい


/* ↓ 追加して下さい */ static int aft_define(void) ; static int pre_define(void) { return(1); } main() { pre_define() ; aft_define() ; } static int aft_define(void) { return(1); }
解説: コンパイラは、ファイルの先頭から、末尾に向かってファイルを 読み込み解析していきます。 pre_define()は、static intだとコンパイラが認識した後に 使用しているので、問題はありませんが。 aft_define()は、宣言をしていないため extern int だと コンパイラが省略時解釈をした後に、実は static int でした とあるので、コンパイラが警告を出します。 C-FAQ 1.25J C-FAQ 1.25E を参照して下さい。