一、
#includeusing namespace std;
// 变量声明
extern int g;
int main ()
{
// 变量定义
int g;
// 实际初始化
g = 100;
cout << g << endl;
return 0;
}
记录1:extern int g; 只是声明了一个变量 g;但是并没有定义,所以仍然需要定义: int g;才能使用变量g;而且声明一个变量是可以在main函数之外,也不在任何函数体里面的;但是定义变量,就只能在函数体里面了。变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。
二、
#includeusing namespace std;
// 变量声明
extern int g;
int main ()
{
// 实际初始化
g = 100;
cout << g << endl;
return 0;
}
记录1:运行会报错:/tmp/005382996/main.cpp:(.text+0x1c): undefined reference to `g';声明并不是定义。
三、
记录1:定义包含了声明,但是声明不包含定义;
int a = 0; //定义并声明了变量
aextern int a; //只是声明了有一个变量 a 存在,具体 a 在哪定义的,需要编译器编译的时候去找。
记录2:函数也是类似,定义的时候同时声明。但如果只是声明,编译器只知道有这么个函数,具体函数怎么定义的要编译器去找。
void fun1(); //函数声明
void fun1(){ //函数定义
cout<<"fun1"<< endl;
}