2 つのコード セグメントがありますが、どちらも 1 行を除いて同じです。1 つのプログラムはコンパイルに失敗し、もう 1 つのプログラムは成功します。cc を実行してコードをコンパイルするときに、数学ライブラリをリンクします。
機能を利用していdouble sin(double)
ます。/usr/include/math.h を調べたところ、関数への参照が見つかりませんでしたが、明らかに math.h で定義されていsin()
ます。
http://www.gnu.org/software/libc/manual/html_mono/libc.html#Trig-Functionsを参照してください。
このsin()
関数は、私が提供する 1 つのコード セグメントでは機能しますが、他のコード セグメントでは機能しません。
//Successful program - demo1.c
#include <stdio.h>
#include <math.h>
int main (void)
{
double input, sine_A;
input = 6.2830;
sine_A = sin(6.2830);
printf("sine=%f\n",sine_A);
return 0;
}
これは失敗したプログラムです:
//Failed program - demo2.c
#include <stdio.h>
#include <math.h>
int main (void)
{
double input, sine_A;
input = 6.2830;
sine_A = sin(input);
printf("sine=%f\n",sine_A);
return 0;
}
$ cc -lm demo2.c
/tmp/ccnpIWZd.o: In function `main':
demo2.c:(.text+0x1c): undefined reference to `sin'
collect2: ld returned 1 exit status
これにより、私は少しばかげている、または少なくとも、何年にもわたって何かを逃したと感じています。