私はいくつかの投稿を読んで、extern がコンパイラに「この関数は存在しますが、そのコードは別の場所にあります。パニックにならないでください」と伝えていると結論付けました。しかし、リンカーは関数が定義されている場所をどのように認識しますか。
私のケース:- Keil uvision 4 に取り組んでいます。ヘッダー ファイル grlib.h があり、メイン関数は grlib_demo.c (grlib.h が含まれています) にあります。現在、Circle.c で定義され、grlib_demo.c で呼び出される関数 GrCircleDraw() があり、次のステートメントもあります。
extern void GrCircleDraw(すべての引数);
grlib.h で。私の質問は、Circle.c が grlib.h と grlib_demo.c に含まれていないため、リンカが GrCircleDraw() の定義がどこにあるかを知る方法です。
注:- ファイル grlib.h と Circle.c は同じフォルダーにあります。コードは正常に実行されます。