编译时期的聚合赋值
C++提供的聚合赋值是个非常方便的语法,免去了一堆堆的for。 举个简单的例子: int a[] = {1,2,3,4,5}; 这就是对数组a进行的聚合赋值。数组a的长度是5,在a[0]~a[4]里分别按顺序的存放着1,2,3,4,5. 可是如果你想在编译程序时对这些(指聚合赋值后的变量)进行引用时,可能就会出现问题。 如果有如下代码 看起来我们定义了一个数组i,而且按顺序的初始化为1,2,3,4,5. 语句
就是用i[3]里存的值(4)对数组f的大小进行初始化。 一切看起来像是如此平静。 但是,错误就在这时候发生了,编译器会给出一个错误: “variable-size type declared outside of any function” 为什么呢???? 因为编译器在编译时期不对数组i里边的数据进行处理,也就是说,它仅仅知道有i这么一个数组,大小它也知道,但是里边的值却不知道(或者说是不必知道)。 相类似的,语句
也是有同样的错误。 但是我们如果对程序略加修改 此时就能通过编译。 这样的问题,需要打醒十二分精神,要出出错了,还不知道自己错在哪。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |