ページ 11

宣言のみで動く関数?

Posted: 2016年1月11日(月) 14:18
by にゃんにゃんc言語
お世話になっております。初めて質問させて頂きます。

この前とある大きなコードを見ました(事情によりこちらに貼る事はできません、すみません)。
そこで呼び出されているある1関数の中身が見たくなり検索をかけたのですが、
どれだけ検索をかけても宣言と呼出個所がでるだけで、中身がどこにも書かれておりませんでした。

ここで質問なのですが、
そんな事(宣言のみで関数が動く)という事はあるのでしょうか?(私の検索方法が悪いだけでしょうか?)
あるとしたら、APIか何かを使用しているという事でしょうか。
恐らくなんらかの形でAPIは使用していると思いますが、だとしても検索かけたら関数の中身が記述している個所はでるはずですし…
なぜ宣言のみでビルドが通り、所定どおりの動作をするのか分からず悩んでおります。

コードを記載できず、あいまいな質問になってしまい申し訳ございません。
どうかご回答よろしくお願いいたします。

Re: 宣言のみで動く関数?

Posted: 2016年1月11日(月) 15:46
by box
関数群のコードをコンパイルしてできたオブジェクトコード群を
ライブラリーの形にしてあって、何かのソフトウェアを
開発する際にそのライブラリーをリンクするようになっているのではないでしょうか。
ライブラリーの形になっているから、当該の関数群のコードは見えなくてもかまわないってことで。

そのライブラリーを使う際は、そこに含まれている関数のプロトタイプ宣言が書いてある
ヘッダーをインクルードする必要があるってことで。

端的な例では標準関数を使うときがそうなっているわけで、
例えば我々はprintf関数のコードがどこにあるかは知らないけど
プロトタイプ宣言はstdio.hに書いてあるから、それをインクルードしておけば
普通に使えるようになっているってことで。