(Sorry if this is a dup, somehow my from address got mangled with the from addr having this message being sent from my system's MAILER DAEMON! Weird.) I have a "proglet", included below (twice, in fact! :-), first with line numbering for referring to the error messages, and a 2nd time without line numbers to allow for easy cut & pasting to try it in your local environment. The error output appears to indicate a problem with compile-time constant folding. gcc --version shows: gcc (SUSE Linux) 4.3.2 [gcc-4_3-branch revision 141291] Compile time output: ct.c:10: error: initializer element is not constant ct.c:11: error: initializer element is not constant Here's the proglet w/line numbering for reference: ------ 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <strings.h> 4 5 typedef const char * String; 6 7 static const String days [] ={"Sun", "Mon", "Tue", "Wed", "Thu" , "Fri", "Sat"}; 8 static const int sizeof_days = sizeof(days); 9 static const int sizeof_String = sizeof(String); 10 static const int numdays = sizeof_days / sizeof_String; 11 static const int last_index=numdays-1; 12 13 int main (){ 14 printf("numdays=%d, lastidx=%d\n",numdays,last_index); 15 } -------- if, in line 8, sizeof(days) is a constant, AND in line 9, sizeof(String) is a constant, then how can their division (in line 10) NOT be a constant? Similarly, how would a "constant value" minus one, (as in line 11) also not be a constant? This seems too obvious for it not to have been caught before. Is this a designed feature deficit, or did I really stumble upon a bug in such mature code that it wouldn't have been reported and fixed years ago? :-) I've also included same program, below, without line numbers (for easy cut & paste to a test file). Am I missing something about constant folding, or is it this some unlikely fluke? Thanks, Linda --------------------- #include <stdio.h> #include <stdlib.h> #include <strings.h> typedef const char * String; static const String days [] ={"Sun", "Mon", "Tue", "Wed", "Thu" , "Fri", "Sat"}; static const int sizeof_days = sizeof(days); static const int sizeof_String = sizeof(String); static const int numdays = sizeof_days / sizeof_String; static const int last_index=numdays-1; int main (){ printf("numdays=%d, lastidx=%d\n",numdays,last_index); } -----------------------------