お忙しいところすみません。
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の定義がないので、コンパイルエラーになるかと思ったのですが。。




トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS