1

関数の「実際の」Cソースコード、つまりgccおよびclangコンパイラでの実際の実装を見たいです。ヘッダーファイルを見ると「本物」という意味ですが、プロトタイプと拡張機能のように見えるものしか表示されません。

たとえば、標準のCtmpnam()関数のコードが必要だとします。stdio.hヘッダーで定義されています(標準では、プロトタイプのみを定義する必要があります。コード自体は、任意の(コンパイラー作成者が選択した)ヘッダーファイルから取得できます)。しかし、私が見ることができるのは

/* Generate a temporary filename.  */
extern char *tmpnam (char *__s) __THROW __wur;
__END_NAMESPACE_STD

それを機能させる関数のコードはどこにありますか?それが私が探しているものです。同様に、clangコンパイラでは見つかりません。可能であれば、誰かがプログラマーのライターがこのモデルを選んだ理由を説明できますか?それぞれのヘッダーファイルにコードを明示的に残しませんか?ある種の最適化を実行するのは「トリック」ですか、それともそのようなものですか?

4

1 に答える 1

4

または同様の C ライブラリ実装のソース コードglibcを取得することができます。探しているコードが含まれているはずです。また、オンラインのソース コードをglibc閲覧することもできます。

理由付けについては、「見る必要のないものは見ていない」という基本的な理由付けです。実装を見る必要はなく、ライブラリへのインターフェースだけです。

于 2013-01-22T03:28:34.283 に答える