[mpich-devel] Issue with MPI_Error_string() for user-defined codes/clases
Larry Baker
baker at usgs.gov
Thu Apr 24 02:11:03 CDT 2014
Lisandro,
You are correct about the C string initializer syntax. I was not paying such close attention to your patch as to pass along to you my feelings that C mixes up integers (especially the chameleon 0) as other types. To me, "" is more communicative of the purpose. I do not have the full text of your comments about the changes you made to the original patch in front of me. I thought you mentioned changing a "" initializer to { 0 }.
Though it is trivial, as I recall, the array initializer syntax also specifies that unspecified elements are initialized with zeros. If that is true, then { 0 } is not exactly the same as "", since { 0 } requires zero-initializing the entire char array whereas "" requires zero-initializing only the first element. I'm not sure an intelligent compiler would do anything different than push a block of zeros on the stack in either case.
Take my comments as a friendly communication. It is not necessary for you to change the trac ticket on my behalf.
Cordially,
Larry Baker
US Geological Survey
650-329-5608
baker at usgs.gov
On Apr 23, 2014, at 11:34 PM, Lisandro Dalcin wrote:
> On 23 April 2014 23:11, Larry Baker <baker at usgs.gov> wrote:
>> Lisandro,
>>
>> As a matter of personal taste, I prefer that empty strings be used as
>> initializers for C strings. One of the things I dislike extremely about C
>> (and, one of the reasons I think it is so easy in C to write bad code) is
>> its mixing of integers and pointers and integers and chars. Even though { 0
>> } is identical to { "" } when initializing C strings, I find the latter more
>> informative. I know the C standard specifies that strings are terminated by
>> the null character, which is elsewhere specified to be a byte with all bits
>> equal to zero. However, "" is the literal empty string, whereas 0 (or '\0')
>> is the underlying implementation of the empty string.
>
> Are you talking about this single line:?
>
> static const char empty_error_string[1] = { 0 };
>
> I guess you are proposing to change it to:
>
> static const char empty_error_string[1] = "";
>
> Please note {""} is an array of strings. Perhaps you meant {'\0'},
> i.e. the null char literal?
>
> Please confirm your concerns were related to that single line of my
> patch, so I can update the trac ticket.
>
>
> --
> Lisandro Dalcin
> ---------------
> CIMEC (UNL/CONICET)
> Predio CONICET-Santa Fe
> Colectora RN 168 Km 472, Paraje El Pozo
> 3000 Santa Fe, Argentina
> Tel: +54-342-4511594 (ext 1016)
> Tel/Fax: +54-342-4511169
More information about the devel
mailing list