うわー、名前でちゃった...
...ついでに質問なんですが、
/* src1.c */
int a; // グローバル変数
int main() {
int x;
x = sub(a);
printf("x: %d\n", x);
printf("a: %p\n", &a);
return 0;
}
/* src2.c */
int a; // グローバル変数
int sub(int n) {
printf(" sub::a: %d\n", a);
printf(" sub::a: %p\n", &a);
return n+1;
}
2つソースファイルで定義してるグローバル変数aは
それぞれでメモリの割付が行われると思うのですが、
同じアドレスのもののようなんです。
ということは、extern記述子は冗長な表現ってことになってしまうんでしょうか?
# externって他のソースファイルで定義してるからここでは宣言のみ、
# ですよってことだったと認識していたのですが