EXTERN キーワードを指定せずに main 関数の最初に変数を宣言すると、静的グローバル変数 (そのファイル内でのみアクセス可能) として扱われますか、それとも他のファイルからアクセスできるようになりますか? 例えば:
#include<stdio.h>
int k;
main()
{
}
変数k
は技術的には他のファイル (モジュール) で使用できますが、他のファイルにextern int k
宣言がない限り、それらは変数について認識せず、コンパイル時エラーはk
他のファイルで不明であることを示します。
外部定義と宣言、デフォルトの初期化をゼロにします。
int k;
外部宣言のみ、他の場所で定義および初期化
extern int k;
外部定義、初期化および宣言
int k = 2;
static int k;
これは、変数 k がファイル スコープでアクセス可能であり、外部には到達できないことをコンパイラに伝えます。
extern int k;
これは、変数 k が他のファイルの変数 k にリンクされていることをリンカーに伝えます。
int k;
これはグローバル スコープであり、2 つのファイルで 2 回宣言することはできません。