私はGCCに関する本を読んでいました。デフォルトでは、標準ライブラリのみがCプログラムにリンクされているとのことです。pow()
は標準ライブラリにないため、フラグを使用してリンクする必要があります-lm
。ただし、コンパイルしたときは、次のように単純に使用しました。
gcc hello.c -o hello
そしてそれはまだ働いた..
また、同様の問題がもう 1 つあります。この本ではprintf("%f\n", 4);
、C プログラムに があり、オプションなしでコンパイルした-Wall
場合、警告は発行されないとも述べています。ただし、オプションなしでコンパイルしようとしました-Wall
が、それでも警告が表示されました。
hello.c:6:2: 警告: フォーマット '%f' はタイプ 'double' の引数を想定していますが、引数 2 のタイプは 'int' です [-Wformat]
どうしてこれなの?この本には、プログラムをコンパイルして警告を表示するには、提供する必要がある-lm
と書かれてい-Wall
ましたが、どちらも使用しませんでしたが、プログラムをコンパイルして警告を受け取りましたか?
ありがとうございました!