声明与定义的问题
求问
#include "Pub.h"
int main()
{
extern int iNum = 0;
return 0;
}
这样编译不过
而
#include "Pub.h"
extern int iNum = 0;
int main()
{
return 0;
}
可以编译通过呢?
[解决办法]
extern int iNum = 0;
告诉编译器iNum是一个external的变量,也就是全局变量。后面的“=0”表明这是一个定义,而不是声明。一个external的变量是不能在非全局的scope中定义的。
[解决办法]
第二种,如果加上初始化,其中的extern被忽略,直接当作定义了一个变量,如果其他文件定义了这个变量,会报重复定义的错误的。
第一种,块作用域中不会忽略extern,不让初始化