数学をコードに適切にリンクするために -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) - 関数プロトタイプといくつかの定義とデータのみが含まれます。それらはソースコードで#includedです - ライブラリ (
libm.so) -アプリケーションにリンクされるバイナリコード (バイナリ コード) が含まれています。また、リンカー フラグという名前のライブラリの場合、フラグは-です。libname.so-lnamelibm.so-lm
アプリケーションに常にリンクされているlibc.soとがあることも考慮してください。およびその他libstdc.soの関数のコードは、これらのライブラリに含まれているため、常に含まれています。stdio.hstdlib.h
PS: ここでは Linux/UNIX を想定しているため、名前は非常に具体的です。.soWindows でも同様ですが、名前が異なります (ファイルではなく DLLなど)。
于 2013-08-05T06:23:51.533 に答える