Jug*_*gni 5 c arrays const constants lifetime
当我运行以下代码时,它适用于C:
#include<stdio.h>
int main(void)
{
const int x=5;
char arr[x];
printf("%d",sizeof(arr));
}
Run Code Online (Sandbox Code Playgroud)
但是,不仅我之前读过const合格的变量不是real常量(这就是为什么它们不能在case条件下使用switch-case),但IBM的以下链接证实了(IBMLINK)并说:
const int k = 10;
int ary[k]; /* allowed in C++, not legal in C */
Run Code Online (Sandbox Code Playgroud)
为什么我允许const在C中使用合格变量作为数组大小而没有任何错误?
Sha*_*our 10
c99支持变长数组,但c90不支持变长数组,如果您正在使用gcc并尝试使用以下参数进行编译,则可以更清楚地看到这一点:
gcc -std=c89 -pedantic
Run Code Online (Sandbox Code Playgroud)
这会给你以下警告:
warning: ISO C90 forbids variable length array ‘y’ [-Wvla]
Run Code Online (Sandbox Code Playgroud)
但如果你使用c99它编译是完全正常的:
gcc -std=c99 -pedantic
Run Code Online (Sandbox Code Playgroud)
正如John Bode所指出的那样,2011 C标准变长数组(VLA)现在是可选的.这是关于VLA 的Dr Dobbs文章,以及Wayne Conrad指出的gcc文档链接.
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |