[an error occurred while processing this directive]
Node:DJGPP-specific,
Next:Unresolved externals,
Previous:Objective C,
Up:Compiling
Q: I must put a DJGPP-specific code fragment into my program. What
symbol should I use in the #ifdef directive to make it only visible
under DJGPP?
A: Use __DJGPP__, like this:
#ifdef __DJGPP__
... DJGPP-specific code ...
#else
... not seen under DJGPP ...
#endif
__DJGPP__ has the value of the DJGPP major revision number, so you
can write code fragments which have different behavior under different
versions of DJGPP:
#ifdef __DJGPP__
#if __DJGPP__ > 2
.... will work only in DJGPP v3.x and later ...
#else
.... get here for DJGPP v2.x ...
#endif
#else
.... get here in DJGPP v1.x or non-DJGPP environment
#endif
If you need to distinguish between minor DJGPP revision numbers, use the
symbol __DJGPP_MINOR__. For example:
#if defined(__DJGPP__) && __DJGPP__ == 2 && __DJGPP_MINOR__ == 1
.... will work only in DJGPP v2.01 ....
#endif
Another DJGPP-specific pre-processor symbol which DJGPP defines is
__GO32__; but it is only provided for compatibility with previous
versions of DJGPP (v1.x) and its use should be discouraged.