好奇问一下,如果我在代码中定义一个长度为零的数组int array[0];
,会发生什么?GCC没有任何抱怨。
示例程序
#include <stdio.h>
int main() {
int arr[0];
return 0;
}
澄清
我实际上正试图弄清楚以这种方式初始化的零长度数组是否被优化掉,而不是像Darhazer评论中的可变长度那样指向它们。
这是因为我必须将一些代码发布到公众之中,所以我正在努力确定是否必须处理SIZE
定义为0
的情况,在某些具有静态定义的int array[SIZE];
的代码中会发生这种情况。
我实际上很惊讶GCC没有抱怨,这引发了我的问题。从我得到的答案来看,缺少警告在很大程度上是由于支持未使用新[]语法更新的旧代码。
因为我主要是在想错误问题,所以我将Lundin的回答标记为正确答案(Nawaz的回答最先,但不是很完整)--其他人指出它在尾部填充结构的实际用途,虽然相关,但不完全是我寻找的内容。
[]
或者在C中""
的作用是什么?有时候,你需要一个函数或者宏来要求一个数组,但是你没有任何数据可以放进去。 - dan04