[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