2011-08-15 3 views
1

可能性の重複を見つけることができます:Cで
Where to find stdio.h functions implementations?ライブラリ関数 - 私は彼らに

を私は図書館が提供する機能のプロトタイプや宣言を含むヘッダを使用されているが、 printfscanfなどの機能がありますか?

どこに保存されていますか?

どのディレクトリにありますか?

なぜ私はそれらを見つけることができませんか?オブジェクトファイルとして保存されていますか?

+1

これらのライブラリ関数の宣言、ソースコード、または実行可能コードをお探しですか? – stakx

+0

私はソースコードを探していません。私はこれらがオブジェクトファイルまたは実行ファイルとして格納されているかどうか、つまり格納されているかどうかを知りたいですか? –

+1

実際のライブラリの実装は、プログラムとリンクされ、実行時にOSによってロードされる共有ライブラリファイルに格納されます。 printfのような標準的なCライブラリ関数は、Linux/BSDでは/lib/libc.so、Windowsではc:\ windows \ system32 \ msvcrt.dllに格納されます。それはあなたが意味することですか? –

答えて

0

これらの関数は、多くの場合libcと呼ばれる標準Cライブラリによって提供されます。

Linuxでは、/lib/libc.so の下にあります。Windowsでは、これをC Run-Time Librariesと呼びます。

0

チェックアウトする場所はsection 3 of the manualです。次に、個々の関数マニュアルページに、必要なヘッダファイルと、リンクが必要な追加ライブラリがあればそれを一覧表示します。

1

誰もが言ったように、そのint libc。あなたは、Linux用の私は見つけることができる、あなたが興味を持っているOSのソースコードブラウザをGoogleで検索することができます:http://lxr.linux.no/linux/

netbsdについて、あなたは見つけることができるprintf、ここscanf: のMac OS X上でhttp://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/?only_with_tag=MAIN#dirlist

+0

多くのUnixライクなシステムでは、数学関数は 'libc'ではなく' libm'にあります。 (リンカが '-lm 'で明示的にリンカやコンパイラを呼び出さない限り、リンカは' sqrt() 'を見つけることができないので、混乱が起こります) –

+0

@Keith Thompson:Thanks kaith。あなたは正しいですが、私はおそらく、あなたのここでポイントを得ていません。あなたは何を伝えようとしていますか? – hari

+0

数学関数を実装するコードは、libcではなくlibmにあることがよくあります。 (より正確には、/usr/lib/libm.soでは、/usr/lib/libc.soや他のシステム固有の命名規則ではありません。) –

0

、それら関数はstdio.hにあり、/usr/includeにあります。ライブラリlibc.dylib/usr/libです。

+0

'libc.dylib'は、OS Xの' libSystem.dylib'上の実際のシステムライブラリへのシンボリックリンクです。 – duskwuff