C++のextern
キーワードを使用して、特定の変数に外部リンケージがあることをコンパイラに伝えることができます。定義と宣言の両方でexternキーワードを指定しても構いません
// first.cpp
int foo = 0;
// second.cpp
extern int foo;
しかし、次の使用はどうですか?両方のファイルが定義と宣言の両方で同じ変数に指定さextern
キーワードを持っている
// first.cpp
extern int foo = 0;
// second.cpp
extern int foo;
注意。
大丈夫ですか?もしそうなら、違いは何ですか?
と等価です標準では*が指定されていますが、変数が宣言されていて初期化子にもその宣言が与えられていれば、その変数のメモリが割り当てられます。また、変数の別の定義を追加しようとすると、コンパイラはエラーをスローします。 – grek40