2011年11月25日金曜日

明解C言語 入門編 Cap07 List7-11




ソース List7-11.c


#include 
#include 

double dist(double x1, double y1, double x2, double y2)
{
    return ( sqrt( (x2 - x1) * (x2 - x1) + (y2 - y1 ) * (y2 - y1) ) );
}

int main(void)
{
    double x1, y1;
    double x2, y2;

    printf(" <点1> X座標: "); scanf("%lf", &x1);
    printf("       Y座標: "); scanf("%lf", &y1);
    printf(" <点2> X座標: "); scanf("%lf", &x2);
    printf("       Y座標: "); scanf("%lf", &y2);

    printf("2点間の距離は%fです。\n", dist(x1, y1, x2, y2) );

    return 0;
}

以下のようにコンパイルするとエラーになる
$ gcc list7-11.c -o list7-11
/tmp/ccJwiHTB.o: In function `dist':
list7-11.c:(.text+0x6d): undefined reference to `sqrt'
collect2: ld はステータス 1 で終了しました

gccがmath libraryにリンクできていないので、gccに-lmをオプションで渡して手動リンクさせる

以下のようにしてコンパイルするとエラーにならない
$ gcc list7-11.c -o list7-11 -lm

参考

gccでmath.hの関数を使うソースがコンパイルできない場合の対処法
http://d.hatena.ne.jp/mickey24/20081008/1223463875

0 コメント: