int ival;//这是声明还是定义?变量默认为extern,那么它应该等价于extern int ival? extern int ival;//这是声明还是定义?和上面是否重复? extern int ival=10;//这算是定义了吧?
extern c++ 隐式 [解决办法] 你确定这个能编译过?
int ival;//这是声明还是定义?变量默认为extern,那么它应该等价于extern int ival? 这就是定义了,加了定义了.h文件不能被两个.c文件include,否则会有符号冲突
extern int ival;//这是声明还是定义?和上面是否重复? 这是声明,声明可以加好多个
extern int ival=10;//这算是定义了吧? 这也是定义,只不过把默认的extern写出来了 [解决办法] 1、int ival; 是定义包含声明 ,extern int ival;只是声明 所以int ival 和 extern int ival 是不等价的。 2、extern int ival;只是声明,声明不为变量分配空间。编译的时候会认为你有这个变量。 例如:extern int ival; ival=1;你编译的时候是不会报错的,但运行时候会报错。 3、extern int ival=10;是变量的定义,因为初始化ival为10,就会分配给他内存空间,分配内存了就算定义了。
[解决办法]
例如:(1) a.cpp int ival; b.cpp ival=1; 成立 (2) a.cpp const int iva b.cpp extern int ival;//加这句话就成立,不加就会出错。 ival=1; [解决办法]