[xmlsec] Little logic error

Igor Zlatkovic igor at stud.fh-frankfurt.de
Mon Oct 21 08:35:38 PDT 2002


That is the inverted logic which gives the same pain: every compiler having 
__FUNCTION__ will need to be included in the first predicate. For example, 
if Borland, Watcom, Symantec, Forte and IBM do support it at least since 
some version, it becomes

   #if defined(__GNUC__) || (_MSC_VER >= 1300) || \
     (__BORLANDC__ >= 4) || (_WATCOM >= 5213) ||  \
     defined(__NORTONC__) || defined(__SUNC__) || \
     (_IBM_AIX_C_COMPILER_WHATEVER >= 123123) ...

and that results in exactly the mess I wanted to avoid :-)

Having one conditional per compiler which has problems with __FUNCTION__ 
would make things a little bit more readable. Okay, GNUC and MSVC might be 
the only compilers used for xmlsec today, but history shows this can change 
very rapidly.

Ciao
Igor

Aleksey Sanin wrote:
> What about:
> 
>  #if defined (__GNUC__) || (_MSC_VER >= 1300)
>  #define DUMMY
>  #else
>  #define __FUNCTION__ ""
>  #endif
> 
> 
> Aleksey
> 
> Igor Zlatkovic wrote:
> 
>> Hi there,
>>
>> There is a small error of mine in include/xmlsec/errors.h regarding the
>> __FUNCTION__ logic. The current predicate is
>>
>>   #if !defined(__GNUC__) || (_MSC_VER >= 1300)
>>
>> which I wrongly assumed would work, on a gloomy day well past 
>> midnight. In
>> fact, this predicate always fires on everything other than GNUC, because
>> __GNUC__ is not defined.
>>
>> The truth is, that the correct predicate cannot be conducted 
>> generally, but
>> every offending compiler must bring its own toys. That brings us to
>> something like
>>
>>   #if defined(__A_COMPILER__) && (__A_COMPILER__ < X)
>>   #define __FUNCTION__ ""
>>   #endif
>>
>> with "__A_COMPILER__" being whatever the current compiler predefines. 
>> Every
>> compiler brand which does not support __FUNCTION__ will need its own
>> construct like the above.
>>
>> I now fixed the predicate to handle the MSVC compiler version lower 
>> than 13.
>> If there is someone using a compiler other than GNUC or MSVC, please 
>> drop me
>> a correct predicate for your compiler, if it doesn't support the builtin
>> __FUNCTION__ macro.
>>
>> Or does someone have a better idea?
>>
>> Ciao
>> Igor




More information about the xmlsec mailing list