http://blog.youkuaiyun.com/chenmeimei_8899/article/details/5640359
今天用sizeof计算一个extern之后的数字的大小,发现总是0,在编译的时候也已经给报错了,但是就是不知道为什么,最后才恍然大悟。
首先sizeof其实在编译期间已经计算了大小;extern之后的数组在编译器期间其实只是一个符号而已,不代表任何意义,只有在连接的时候知道了它的地址才会和正在数组的定义的地方连接起来,所以在vc上做如下的操作
extern int a[];
sizeof(a);
首先编译器会给你警告,在运行期间去看sizeof(a)的值总是是0;
本文探讨了在C/C++中使用extern声明与sizeof运算符时的一个常见误区。通过具体示例解释了为什么extern声明的数组在使用sizeof时会返回0,并说明了这与编译阶段如何处理extern声明有关。
360

被折叠的 条评论
为什么被折叠?



