外部キーワード
外部から利用可能な (グローバル変数) extern---- グローバル静的ストレージ領域
標準定義形式: extern 型名 変数名;
すべての関数の外で定義された変数がそのストレージ クラスを指定していない場合、それは外部変数であり、そのスコープはその定義の時点からこのファイルの終わりまでです (これは、複数のソース ファイルがある場合、単一のソース ファイルに当てはまります)ソース ファイルでは、グローバル変数のスコープは変数定義からファイルの最後までではなく、他のファイルでも有効です) が、定義ポイントの前または他のファイルで使用したい場合は、次のようにする必要があります。キーワード extern 宣言します (定義されていないことに注意してください。コンパイラはそれにメモリを割り当てません)。
推奨される最適な使用法:
たとえば、ac ファイルで int a = 5 と関数を定義し、ah に記述します。extern int a;
他のファイルで変数と関数 a を呼び出したい場合は、#include "a.h"
直接呼び出します。以下に示すように
交流
#include <stdio.h>
int data = 5;
int func(int a,int b)
{
return a+b;
}
ああ
extern int data;
extern int func();
紀元前
#include <stdio.h>
#include "a.h"
int main()
{
printf("b.c data = %d\n",data);
printf("func = %d\n",func(2,3));
return 0;
}
質問:
グローバル変数が ac ファイルで定義されており、それを main 関数で使用したい場合は、どうすればよいですか?
①main関数を含むソースファイルtest.cにextern文を追加
交流
#include <stdio.h>
int sum = 100;
int Max(int num1,int num2)
{
int max = num1;
if(num1 < num2){
max = num2;
}
return max;
}
ああ
extern int Max(int num1, int num2);
test.c
#include <stdio.h>
#include "a.h"
int main()
{
int a;
a = Max(10,20);
printf("%d %d",a,sum);
return 0;
}
②ヘッダファイルah内でグローバル変数acを宣言し、ヘッダファイルahをtest.cにインクルードします。
ああ
extern int Max(int num1, int num2);
extern int sum;