The common predefined macros are GNU D extensions. They are available
with the same meanings regardless of the machine or operating system on
which you are using GNU D. Their names all start with GNU.
GNUThis version is defined by the GNU D compiler. If all you need to know is
whether or not your D program is being compiled by GDC, or a non-GDC compiler,
you can simply test version(GNU).
GNU_DWARF2_ExceptionsGNU_SEH_ExceptionsGNU_SjLj_ExceptionsThese versions reflect the mechanism that will be used for exception handling
by the target. GNU_DWARF2_Exceptions is defined when the target uses
DWARF 2 exceptions. GNU_SEH_Exceptions is defined when the target uses
SEH exceptions. GNU_SjLj_Exceptions is defined when the target uses the
setjmp/longjmp-based exception handling scheme.
GNU_EMUTLSThis version is defined if the target does not support thread-local storage, and an emulation layer is used instead.
GNU_InlineAsmThis version is defined when asm statements use GNU D style syntax.
(see Inline Assembly)
GNU_StackGrowsDownThis version is defined if pushing a word onto the stack moves the stack pointer to a smaller address, and is undefined otherwise.