如果我在C/C+中定义了一个0大小的数组,会发生什么?
只是好奇,如果我定义了一个零长度数组,会发生什么?int array[0];
用密码?GCC一点也不抱怨。
样本程序
#include <stdio.h>int main() {
int arr[0];
return 0;}
澄清
我实际上是想弄清楚,以这种方式初始化的零长度数组,而不是像Darhazer的注释中的可变长度那样,是否被优化了。
这是因为我必须发布一些代码到野外,所以我试图找出我是否必须处理SIZE
定义为0
,它发生在具有静态定义的代码中。int array[SIZE];
我其实很惊讶GCC没有抱怨,这就引出了我的问题。从我收到的答案来看,我认为没有警告很大程度上是因为支持没有用新的[]语法更新的旧代码。
因为我主要想知道这个错误,我把Lundin的答案标记为正确(Nawaz的答案是第一位的,但它没有那么完整)-其他人都指出了它在尾部填充结构中的实际用途,虽然它是相关的,但并不是我想要的。