//如果声明有初始化式,它就被当作定义,即使它有extern
//只有extern声明位于在函数外面时,才可以被初始化。
//C语言中定义的变量默认就是extern的,因此 extern int a = 10; 等价于 int a = 10;
extern int a = 10; // 定义a为外部的整型变量
int main(void)
{
extern int a; //声明一个外部extern的整型变量
// 这是个声明而不是定义,声明a是一个已经定义了的外部变量
// 注意:声明外部变量时可以把变量类型去掉如:extern a;
int b; // 定义一个变量, 不初始化
int c = 10; // 定义一个变量, 同时进行初始化
extern int d = 10; //这个定义很明显被gcc编译器认为是错误的。
//'d' has both 'extern' and initializer
return 0;
}