Level 5は問題の毛色を変えてみました.Level 1~Level 4と大分違う系統の問題で,Level 5にするかどうかで迷いましたが,これくらいは知っててほしいなあということでLevel 5にしました.
個人的には,この問題に自信を持って答えられるくらいの力があれば,C言語については初心者を脱していると言って良いと思います.
問題(Level 5)
コンパイルとリンクの違いを説明してください.
また,下記のcommon.h,a.c,b.cを用いて実行可能ファイルを作ろうとすると,次のようなエラーになってしまいました.
3つのファイルをそれぞれどう修正したらいいでしょうか?(すべてのファイルの修正が必要とは限りません)
ちなみに,作ろうとしているプログラムは,標準出力に と出力するものです.
エラーメッセージ
$ gcc a.o b.o
b.o:b.c:(.bss+0x0): multiple definition of `hit_point'
a.o:a.c:(.bss+0x0): first defined here
collect2: ld returned 1 exit status
#include "common.h"
int main(void)
{
PrintHitPoint();
hit_point = 100;
PrintHitPoint();
return 0;
}