includeがいらない理由

ksnに教えてもらって納得。
Cでは定義されていない関数はint型を返す関数として自動的に定義されるのでコンパイル自体は問題なく行える。「暗黙的な関数宣言」ってのはそのことの警告だったんだよね。でもってリンクするのはstdio.hとかstring.hとかstdlib.hに入っている関数の実体が入っているオブジェクトなのでやっぱり問題なく動かせるということなのだ。


でも、math.hの関数を使うときは-lmのリンク指定が必要だよね。

gcc filename -lm

リンク指定がいるのといらないものの違いはなんなんだろう。