file1.cの中でfooを参照すると3になり、
file2.cの中でfooを参照すると7になります。
staticを付けてないので両方のfooは外部リンケージ
を持つのに 「外部リンケージを持つ変数はプログラム
の中でただ一つの定義を持たなければならない」という
規則に違反しないんでしょうか?