ヘロンの公式で三角形の面積を求める

#include <stdio.h>
#include <math.h>

int main(int argc,char* argv[]){
  char buffer[80];
  double a,b,c,s,temp,area;

  fgets(buffer,80,stdin);
  sscanf(buffer,"%lf %lf %lf",&a,&b,&c);

  s = (a + b + c)/2;

  temp = s*(s-a)*(s-b)*(s-c);

  area = sqrt(temp);

  printf("%lf\n",area);
}

なんてことないプログラムですが、コンパイル時に

undefined reference to 'sqrt'
collect2:ld はステータス1で異常終了しました。

というエラーが出ました。

tempの部分を9とかに書き直すとちゃんと出力されて、う〜ん?と思っていたのですが、コンパイル時に-lmオプションをつけていなかったのが原因のようです。

  • lはライブラリのリンク、mはライブラリの名前なのだとか。ちょっと勉強になりました。