关于c99编译的问题
我在看一些老师讲的c的课件,在声明数组长度的时候使用const常量来指定数组长度。
const int length=10;
int arr[length]={.....};
为什么我在本地编译通不过?据说是跟编译器支持次c99有关系。
./test2.c:10:2: error: variable-sized object may not be initialized
int arr[num]={2};
^
我在编译的时候加上了 -std=c99也还是不行
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这样的写法是没问题的. 问题在于不能用变量声明数组大小的同时初始化.
初始化这样的数组还是需要使用循环的;
一般不用变量定义数组个数,可以用宏来代替
当然C99支持常量定义动态长度的数组,但是根据你的代码,你虽然有定义常量,但是你定义的常量不是编译时常量,编译器在编译时并不会得到长度,所以其实你的常量并没有起效,实在要这样写,可以把声明和定义分开:
当然,如果你对内存操作熟悉,上述老外的答案也是个不错的写法。