次のようにまとめてコンパイルされた次のコードを実行していました。gcc A.c B.c -o combined
プログラム A:
#include<stdio.h>
int a=1;
int b;
int main()
{
extern int a,b;
fun();
printf("%d %d\n",a,b);
}
プログラム B:
int a;
int b=2;
int fun()
{
printf("%d %d\n",a,b);
return 0;
}
「結合された」プログラムを実行すると、出力は次のようになりました。
1 2
1 2
さて、私はこれについていくつかの疑問を持っています:
出力がないのはなぜですか:
0 2
1 0
a と b が 2 回定義されていませんか?
これらを明確に説明してください。私は extern を理解するのに多くの問題を抱えており、これらの疑問のいくつかは時々出てきます。
前もって感謝します。