お忙しいところすみません。 Cでちょっと教えていただけますでしょうか。 [m-hinata@NGNserver04 070801_sample]$ cat 1.c #include <stdio.h> #include "sample.h" int main(){ int a; a =func_a(); printf ("main shuuryou\n"); return a; } [m-hinata@NGNserver04 070801_sample]$ cat 2.c #include <stdio.h> #include "sample.h" int func_a (){ int a; printf ("func yobareta\n"); return a; } [m-hinata@NGNserver04 070801_sample]$ cat include/sample.h [m-hinata@NGNserver04 070801_sample]$ cat include/sample.h_ari int func_a(); [m-hinata@NGNserver04 070801_sample]$ gcc -c 1.c -I./include [m-hinata@NGNserver04 070801_sample]$ gcc -c 2.c -I./include [m-hinata@NGNserver04 070801_sample]$ gcc -o jikkou *.o [m-hinata@NGNserver04 070801_sample]$ ./jikkou func yobareta main shuuryou [m-hinata@NGNserver04 070801_sample]$ rm -rfd jikkou 2.o [m-hinata@NGNserver04 070801_sample]$ gcc -o jikkou *.o 1.o(.text+0xe): In function `main': : undefined reference to `func_a' collect2: ld はステータス 1 で終了しました ↑コンパイルエラーとリンクエラーについて確認したくて、 ・bodyがなければ"undefined reference"リンクエラー ・ヘッダに記述がなければ.oをつくるときにコンパイルエラー を期待していたのですが、 前者はOKで、後者は、sample.hでも、sample.h_ariをsample.hにmvして実行しても同じく.oが作成されてしまいます。 これはどうしてでしょうか。 1.c内にはfunc_aの定義がないので、コンパイルエラーになるかと思ったのですが。。 ---- - 分割コンパイルとリンケージ http://www.cc.kyoto-su.ac.jp/~hxm/cstext/prog06.html -- &new{2007-08-01 (水) 10:20:47}; - ちなみにgccでコンパイルするときに-Wオプションと-Wallオプションをくつけたらどうなる? -- [[o]] &new{2007-08-01 (水) 12:05:59}; - ちなみにgccでコンパイルするときに-Wオプションと-Wallオプションをくつけたらどうなる? -- [[o]] &new{2007-08-01 (水) 13:43:06}; - おっと失礼 リロードしちゃいました -- [[o]] &new{2007-08-01 (水) 13:43:49}; - ありがとうございます!きました!!「1.c:5: 警告: 関数 `func_a' の暗黙の宣言」 -- [[日向充]] &new{2007-08-01 (水) 13:45:46}; #comment ---- -[[メモメモ]]