0

別の C ファイルでグローバル変数を使用する場合は、次のようにデータ型の前にアクセス指定子externを付ける必要があることを読みました。

File One                             File Two
int x, y;                            extern int x, y;
char ch;                             extern char ch;
int main(void)                       void func22(void)
{                                     {
/* ... */                              x = y / 10;
}                                     }
void func1(void)                      void func23(void)
{                                     {
x = 123;                               y = 10;
}                                     }

誤ってファイル 2 で x、y をそのまま宣言していません。int xそれらをandとして宣言しint y、コンパイラが変数xとyの再定義のエラーを表示するのを待ちますが、コードはエラーなしで実行されます。

例えば:

ファイルワン

#include <stdio.h>

int global = 1000;  /** declare global variable called 
                       global **/

int main(){

print();

return 0;
}

ファイル 2

int global;   /** here I don't use the extern keyword **/

void print(void){

global = 100;

printf("\n global = %d",global);

return;

}

結果は次のとおりです。global = 100

プログラムはエラーなしでコンパイルおよびリンクされます

だから私の質問は次のとおりですextern。指定子はここで冗長ですか?!

4

1 に答える 1