を '呼び出し'する.c
ファイルで使用されているさまざまな関数、構造体などの前方宣言がヘッダファイルにあることは知っていますか?私の知る限り理解し、 "三権分立" は、このように発生します。Cヘッダファイルとコンパイル/リンク
ヘッダファイル:func.h
を機能
int func(int i);
Cソース・ファイルの前方宣言が含まれています。 func.c
は、実際の関数の定義に含まれてい
#include "func.h" int func(int i) { return ++i ; }
Cソースファイルsource.c
( "実際の" プログラム):
#include <stdio.h>
#include "func.h"
int main(void) {
int res = func(3);
printf("%i", res);
}
私の質問です:#include
は単にそのコピーコンパイラ・ディレクティブであることを見て#include
が入っているファイルの.h
の内容は、どのようにして実際にその機能を実行するのかを知っていますか?.c
それはすべてint func(int i);
なので、実際にどのように機能するのですか? func
の実際の定義にどのようにアクセスできますか?ヘッダーには、「そこには私の定義があります」と言う何らかの「ポインタ」が含まれていますか?
どのように動作しますか?
これは、リンカの定義を解決し、コンパイル時に存在すると主張しているものが実際に存在することを保証する魔法です。 –
ヘッダーファイルを扱うときは、[include guards](http://en.wikipedia.org/wiki/Include_guard)を参照してください。 –
私はインクルードガードについて知っていますが(すべてのifndef)、簡潔にするため省略しました。 – Aristides