warn/croak on "string" "string" auto-joins

Chris Jefferson caj@cs.york.ac.uk
Wed Aug 18 11:19:00 GMT 2004


Mathieu Lacage wrote:

>On Wed, 2004-08-18 at 12:12, Chris Jefferson wrote:
>  
>
>>Dave Korn wrote:
>>
>> >
>> >>>>This would have helped early and is good practice:
>> >>>>
>> >>>>char *months[12] = {"Jan", "Feb", "Mar", "Apr", "May",
>> >>
>> >>"Jun", "Jul",
>> >>
>> >>>>"Aug" "Sep", "Oct", "Nov", "Dec"};
>> >>>>
>> >>>>--> high probability warning
>> >>>
>> >>>I'm not sure I understand, what does "high probability
>> >>
>> >>warning" mean?
>> >>
>> >>>I get no errors/warnings from the following:
>> >>>
>> >>>#include <stdio.h>
>> >>>int main( void )
>> >>>{
>> >>>  char *months[15] = {"Jan", "Feb", "Mar", "Apr", "May",
>> >>
>> >>"Jun", "Jul",
>> >>
>> >>>"Aug" "Sep", "Oct", "Nov", "Dec"};
>> >>>  printf("7: %s\n", months[8]);
>> >>>  return 0;
>> >>>}
>> >>>
>> >>>compiled with 'gcc -Wall -pedantic -ansi', using GCC 3.3.3.
>> >>
>> >>Hmm, I could have sworn that a mismatch in array dimensions
>> >>does emit a warning (too many initializers do error out "como").
>> >>Looks like this is not the case. Sorry for bothering you :-(
>> >
>> >
>> >  But it has too *few* initialisers!
>> >
>>While not exactly what was asked for in the first place, it would seem 
>>to me this kind of problem (giving too few initalisers to a fixed length 
>>array) should definatly emit a warning.. would this be hard to do / can 
>>anyone come up with a sensible reason to give too few initalisers?
>>    
>>
>
>While not a C standard guru, I think this is allowed and compatible with
>the C99 initialization rules. Specifically, section 6.7.8, p125,
>paragraphs 17, 19 and 10 which means that the end of your char *array is
>initialized with null values.
>
>  
>
I'm also fairly certain that it is legal.. however the purpose of 
warnings is to emit messages about things which while legal someone 
probably didn't mean to write :) and this would I think apply almost 
always in this case, and would go some way to fixing the original 
problem I think.



More information about the Gcc mailing list