質問: 下記のような質問をして、解答していただき、コンパイル実行をしました。 コンパイル時はマクロ定義した関数を括弧でくくりました。 Linux GNOME端末です。 『 C言語数値計算 ニュートン法です。 下記のプログラミングで、何故#includeが必要なのかよく分かりません。先ほどの質問で、関数のマクロ定義は良くないと伺いましたが、今回はマクロ定義でのせさせていただきます。よろしくお願いします。 #include #include #include #define F(x) exp(x)-3.*x #define FD(x) exp(x)-3. #define EPS 1.E-5 void main(void) { double x=0.0,fx,fdx,fx; int n=0; do{ fx=F(x); fdx=FD(x); dx=-fx/fdx; n++; x+=dx; } while(fabs(dx/x)>EPS); printf("x=%7.3f\n",x); } 』 すると、#includeがあってもなくても下のようなエラーがでます。間違いを指摘していただきたいです。 :(.text+0x24): undefined reference to `exp' :(.text+0x3f): undefined reference to`exp'
回答: gcc hogehoge.c -lm //#include と double x=0.0,fx,fdx,dx; //fx をすればコンパイルは通ると思います。