数学をコードに適切にリンクするために -lm と入力する必要がある理由がわかりませんが、stdio については同じことをする必要はありません。私は C を使い始めたばかりなので、これがばかげた質問であったり、明らかな何かが欠けている場合は申し訳ありません。
質問する
1966 次
2 に答える
6
要するに、歴史的な理由から、
の関数はstdio.h
にlibc
あり、 の関数math.h
は にありlibm
ます。libc
はデフォルトでリンクされていますが、libm
そうではありません。
于 2013-08-05T06:25:31.247 に答える
3
2 つの異なる点があります。
- ヘッダー ファイル (
stdio.h
およびmath.h
) - 関数プロトタイプといくつかの定義とデータのみが含まれます。それらはソースコードで#include
dです - ライブラリ (
libm.so
) -アプリケーションにリンクされるバイナリコード (バイナリ コード) が含まれています。また、リンカー フラグという名前のライブラリの場合、フラグは-です。libname.so
-lname
libm.so
-lm
アプリケーションに常にリンクされているlibc.so
とがあることも考慮してください。およびその他libstdc.so
の関数のコードは、これらのライブラリに含まれているため、常に含まれています。stdio.h
stdlib.h
PS: ここでは Linux/UNIX を想定しているため、名前は非常に具体的です。.so
Windows でも同様ですが、名前が異なります (ファイルではなく DLLなど)。
于 2013-08-05T06:23:51.533 に答える