おそらく最も簡単な説明は、コードがプログラム自体の一部ではない多くの関数をプログラムが呼び出しまたは使用しているということです。たとえば、何かを印刷するためにコードに「printf」を記述した場合、コンパイラはその呼び出しをどう処理するかを知りません。
stdio.h は、その printf の情報が存在する場所です。
アップデート:
むしろ、printf 関数のプロトタイプ(名前、戻り値の型、およびパラメーター) は stdio.h にあります。コンパイル段階で必要なのはこれだけです。printf の実際のコードは、コンパイル後に行われるリンク段階に含まれます。
include ステートメントは基本的に、実際のコンパイルの前にすべての関数プロトタイプを挿入します。したがって、名前のプリプロセッサ。
更新 2:
質問はインクルードステートメントに焦点を当てていたので(そしてOPは関数の定義を自分で書くことについても尋ねたので、別の重要な側面はそれが次のように書かれているかどうかです(角括弧に注意してください)
#include <stdio.h>
プリプロセッサは、これが標準ライブラリ ヘッダーであると想定し、最初にコンパイラがインストールされているシステム フォルダを調べます。
代わりに、プログラマーが自分で関数を定義し、現在の作業ディレクトリに .h ファイルを配置する場合、彼は使用します (二重引用符に注意してください)。
#include "stdio.h"
以下はそれを示しており、動作はすべてのプラットフォームで移植可能です。