Contents Up Previous Next

Preprocesser symbols defined by wxWidgets

Here is the list of preprocessor symbols used in the wxWidgets source grouped by category (and sorted by alphabetical order inside each category).

GUI system
Operating systems
Hardware architectures (CPU)
Hardware type

GUI system

__WINDOWS__ any Windows, yom may also use __WXMSW__
__WIN16__ Win16 API (not supported since wxWidgets 2.6)
__WIN32__ Win32 API
__WIN95__ Windows 95 or NT 4.0 and above system (not NT 3.5x)
__WXBASE__ Only wxBase, no GUI features
__WXWINCE__ Windows CE
__WXGTK12__ GTK+ 1.2 or higher
__WXGTK20__ GTK+ 2.0 or higher
__WXMOTIF__ Motif
__WXMOTIF20__ Motif 2.0 or higher
__WXMAC__ Mac OS whether Classic (Mac OS 8/9 TARGET_CARBON == 0) or Carbon (including Mac OS X TARGET_CARBON == 1)
__WXMGL__ SciTech Soft MGL (__WXUNIVERSAL__ will be also defined)
__WXMSW__ Any Windows
__WXOS2__ Identical to __WXPM__
__WXPM__ OS/2 native Presentation Manager
__WXSTUBS__ Stubbed version ('template' wxWin implementation)
__WXXT__ Xt; mutually exclusive with WX_MOTIF, not implemented in wxWidgets 2.x
__WXX11__ wxX11 (__WXUNIVERSAL__ will be also defined)
__WXWINE__ WINE (i.e. WIN32 on Unix)
__WXUNIVERSAL__ wxUniversal port, always defined in addition to one of the symbols above so this should be tested first.
__X__ any X11-based GUI toolkit except GTK+

In fact, they should better all start with __WX instead of __ only, so please start any new defines with __WX.

Operating systems

__APPLE__ any Mac OS version
__BSD__ Any *BSD system
__CYGWIN__ Cygwin: Unix on Win32
__DARWIN__ Mac OS X using the BSD Unix C library (as opposed to using the Metrowerks MSL C/C++ library)
__DOS_GENERAL__ DOS (used with wxMGL only)
__HPUX__ HP-UX (Unix)
__GNU__ GNU Hurd
__LINUX__ Linux
__MACH__ Mach-O Architecture (Mac OS X only builds)
__OSF__ OSF/1
__SOLARIS__ Solaris
__SUN__ Any Sun
__SUNOS__ Sun OS
__SVR4__ SystemV R4
__SYSV__ SystemV generic
__ULTRIX__ Ultrix
__UNIX__ any Unix
__UNIX_LIKE__ Unix, BeOS or VMS
__WINDOWS__ any Windows

Hardware architectures (CPU)

Note that not all of these symbols are always defined, it depends on the compiler used.

__ALPHA__ DEC Alpha architecture
__INTEL__ Intel i386 or compatible
__POWERPC__ Motorola Power PC

Hardware type

Combination of these symbols with GUI symbols describes real hardware (like __PDA__ && __WXWINCE__ == PocketPC devices).

__SMARTPHONE__ Mobile devices with dialog capability through phone buttons and small display
__PDA__ Personal digital assistant usually with touch screen and middle sized screen
__HANDHELD__ Small enough but powerful computer


__BORLANDC__ Borland C++. The value of the macro corresponds to the compiler version: 500 is 5.0.
__DIGITALMARS__ Digital Mars
__GNUG__ Gnu C++ on any platform, see also wxCHECK_GCC_VERSION
__GNUWIN32__ Gnu-Win32 compiler, see also wxCHECK_W32API_VERSION
__MINGW32__ MinGW
__MWERKS__ CodeWarrior MetroWerks compiler
__SUNCC__ Sun CC
__SYMANTECC__ Symantec C++
__VISAGECPP__ IBM Visual Age (OS/2)
__VISUALC__ Microsoft Visual C++. The value of this macro corresponds to the compiler version: 1020 for 4.2 (the first supported version), 1100 for 5.0, 1200 for 6.0 and so on
__XLC__ AIX compiler
__WATCOMC__ Watcom C++. The value of this macro corresponds to the compiler version, 1100 is 11.0 and 1200 is OpenWatcom.
_WIN32_WCE Windows CE version


__WXWINDOWS__ always defined in wxWidgets applications, see also wxCHECK_VERSION
__WXDEBUG__ defined in debug mode, undefined in release mode
wxUSE_XXX if defined as 1, feature XXX is active (the symbols of this form are always defined, use #if and not #ifdef to test for them)
wxUSE_GUI this particular feature test macro is defined to 1 when compiling or using the library with the GUI features activated, if it is defined as 0, only wxBase is available.
wxUSE_BASE only used by wxWidgets internally (defined as 1 when building wxBase code, either as a standalone library or as part of the monolithic wxWidgets library, defined as 0 when building GUI library only)