繁体   English   中英

为什么我被允许在C中使用const限定变量作为数组大小?

[英]Why am I being allowed to use a const qualified variable as an array size in C?

当我运行以下代码时,它适用于C:

#include<stdio.h>

int main(void)
{

const int x=5;
char arr[x];
printf("%d",sizeof(arr));

}

但是,并非只有我读之前const合格的变量不是real常数(这就是为什么他们不能使用case条件switch-case ),而是来自IBM以下链接证实那( IBMLINK )说:

 const int k = 10;
 int ary[k];     /* allowed in C++, not legal in C */

为什么我允许在C中使用const限定变量作为数组大小而没有任何错误?

c99支持可变长度数组,但c90不支持可变长度数组,如果你使用gcc并尝试使用这些参数进行编译,你可以更清楚地看到它:

gcc -std=c89 -pedantic

这会给你以下警告:

warning: ISO C90 forbids variable length array ‘y’ [-Wvla]

但如果你用c99编译它是完全正常的:

gcc -std=c99 -pedantic 

正如John Bode所指出的那样,2011 C标准可变长度数组( VLA )现在是可选的。 这是关于VLA的Dr Dobbs文章,以及Wayne Conrad指出的gcc文档的链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM