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
_______________________________________________
xmlsec mailing list
[EMAIL PROTECTED]
http://www.aleksey.com/mailman/listinfo/xmlsec

Reply via email to