[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.