C言語のexternキーワードの役割は何ですか?
C言語では、externキーワードは変数や関数が別のファイルで定義されていることを宣言するために使用されます。つまり、その変数や関数の定義は別のファイルにあり、現在のファイルでは参照するだけです。externキーワードの目的は、コンパイラにリンク時に他のファイルでその変数や関数の定義を探すように指示することです。
C言語では、変数や関数の宣言と定義が分かれており、宣言は変数や関数が存在することをコンパイラに伝えるものであり、定義は変数にメモリ空間を割り当てたり、関数の機能を実装したりすることです。変数や関数が複数のファイルで使用される場合、各ファイルで宣言を行い、それらのうちの1つで定義を行う必要があります。externキーワードを使うことで、変数や関数の重複定義を回避することができます。
例えば、変数や関数をファイル内に宣言する場合:
extern int x; // int型の変数xを宣言する
extern void func(); // 戻り値がない関数funcを宣言する
その後、別のファイルでその変数や関数を定義します:
int x; // 変数xを定義
void func() { // 関数funcの機能を定義 }
externキーワードを使用して変数や関数を宣言する場合、コンパイラーはリンク時に他のファイルでその定義を検索し、すべてのファイルでその変数や関数への参照が同じ定義を指すように確認します。これにより、複数のファイル間で変数や関数を共有することができます。