私は extern に基づいたプログラムを試していましたが、私が理解しているように、これは定義が 1 つしかない複数のファイルにまたがる変数にアクセスするときに役立ちます。
しかし、私は以下のような単純なプログラムを試してみましたextern
が、リンクプロセス中に失敗すると予想していたときにうまくいくようです
file5.c:
#include <stdio.h>
#include "var.h"
int a = 20;
int main() {
printf("\n File5.c a = %d", a);
test();
return 0;
}
file6.c:
#include <stdio.h>
#include "var.h"
int test() {
printf("\n File6.c a = %d",a);
}
var.h
int a;
var.h
extern なしですべてのヘッダー ファイルにインクルードint a
したため、ファイルとリンクの両方にインクルードされるため.c
、コンパイラは警告またはエラー メッセージをスローする必要がありましたが、問題なくファイルをコンパイルします。
var.h
次のようなものがあってはいけませんextern int a
か?