When I run the following code,it works fine for C:
#include<stdio.h>
int main(void)
{
const int x=5;
char arr[x];
printf("%d",sizeof(arr));
}
But not only had I read before that const
qualified variables are not real
constants (that's why they can't be used in case
condition of switch-case
),but the following link from IBM corroborates that (IBMLINK) and says:
const int k = 10;
int ary[k]; /* allowed in C++, not legal in C */
Why then am I allowed to use a const
qualified variable in C as an array size without any error?
c99
support variable length arrays butc90
does not support variable length arrays, you can see this more clearly if you are usinggcc
and try to compile with these arguments:this will give you the following warning:
but if you compile using
c99
it is perfectly fine:As pointed out by John Bode as of the 2011 C standard variable length arrays(
VLA
) are now optional. Here is a Dr Dobbs article on VLA and also a link to thegcc
docs as pointed out by Wayne Conrad.