extern キーワードの使用法

外部キーワード

外部から利用可能な (グローバル変数) 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;

おすすめ

転載: blog.csdn.net/lijunlin0329/article/details/129008299