This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
C const identifiers and constant expressions
- From: Michael Winslow <liandril at yahoo dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Mon, 21 Mar 2005 16:18:28 -0800 (PST)
- Subject: C const identifiers and constant expressions
It seems to me that I used to (this was admittedly ten plus years ago)
declare static arrays in C using const identifiers as the array length,
something like this:
static const unsigned int arraysize = 20;
static unsigned int myarray[arraysize];
but I tried doing this the other day, and couldn't get the compiler to
view the array as anything other than a variable length array. Is
there some way short of resorting to preprocessor macros to tell the
compiler that an identifier is a compile-time constant, and is
therefore suitable for use in sizing an array?
I tried using various language standard compiler options, thinking that
it may just be that the language has changed since I remember having
that habit, but to no avail. It could also be that I was using a
non-standard compiler back then, or even that I'm remembering a C++
habit I had that I never used with C.
I looked in the C99 standard, and sure enough, couldn't find anything
about constant expressions including identifiers declared const, so
this isn't a problem with the compiler. But are there reasons for
this? Are there situations where the compiler (or the coder) gets into
trouble if const identifiers are used in constant expressions? Or is
it simply not traditional C to provide for this?
Oh - if it makes any difference, I'm on GCC v3.4.1
Thanks,
Michael Winslow
__________________________________
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
http://promotions.yahoo.com/new_mail