我试过这三个小程序的版本,并且得到了一些有趣的结果。任何人都可以帮助我理解每种情况下的编译器行为。了解程序和GCC编译器行为中变量的多重声明
version 1.0
int A;
int A;
int A;
int main()
{
return 0;
}
Result: Got compiled with one copy of A in BSS.
Version 2.0
int main()
{
int A;
int A;
int A;
return 0;
}
Result: Failed to compile with complaining for re-declaration.
Version 3.0
int A;
int main()
{
static int A;
return0;
}
result: Compiled with two copy of A in BSS. one is A and another a.<some numeric tag>.
Satpal查看这两个:[** 6.9.2外部对象定义**](http://c0x.coding-guidelines.com/6.9.2.html)和[**为什么变量不能是在C **中的两个文件中定义两次](http://stackoverflow.com/questions/4990315/why-a-variable-cant-be-defined-twice-in-2-files-in-c) –