ばかげた質問であることは認めます。コードはそれをよりよく説明します。これらのファイルを取得しました:
こんにちはC:
#include <stdio.h>
void hello(char * s)
{
printf("hello, %s\n", s);
}
main.c:
int main()
{
hello("world!");
return 0;
}
メイクファイル:
test : main.o hello.o
gcc -o test main.o hello.o
main.o : main.c
gcc -c main.c
hello.o : hello.c
gcc -c hello.c
.PHONY : clean
clean :
-rm test
-rm main.o
-rm hello.o
「make」して「./test」するだけで動作します。コンパイラが関数プロトタイプを認識できるように、main.c に hello.h のようなものを含める必要があるのではないでしょうか?
どこにも hello.c を含めていませんでした。なぜ main.c は hello 関数を知っているのでしょうか?
それが機能する場合、いつ .h ファイルが必要になりますか? 私は C プログラミングの初心者ですが、この概念は理解しやすいと思っていましたが、今では完全に混乱しています。