]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/cppconst.tex
define _HPUX_SOURCE under HP-UX, otherwise many things are not defined in standard...
[wxWidgets.git] / docs / latex / wx / cppconst.tex
CommitLineData
fc2171bd 1\section{Preprocesser symbols defined by wxWidgets}\label{cppconst}
14aea4f9 2
dceb1c09 3These are preprocessor symbols used in the wxWidgets source, grouped
d80fc6df 4by category (and sorted by alphabetical order inside each category). All of
dceb1c09 5these macros except for the \texttt{wxUSE\_XXX} variety is defined if the
d80fc6df 6corresponding condition is true and undefined if it isn't, so they should be
dceb1c09 7always tested using \texttt{#ifdef} and not \texttt{#if}.
14aea4f9 8
a203f6c0 9\subsection{GUI system}\label{guisystemconst}
14aea4f9
VZ
10
11\begin{twocollist}\itemsep=0pt
12\twocolitem{\_\_WINDOWS\_\_}{any Windows, yom may also use \_\_WXMSW\_\_}
fc2171bd 13\twocolitem{\_\_WIN16\_\_}{Win16 API (not supported since wxWidgets 2.6)}
14aea4f9
VZ
14\twocolitem{\_\_WIN32\_\_}{Win32 API}
15\twocolitem{\_\_WIN95\_\_}{Windows 95 or NT 4.0 and above system (not NT 3.5x)}
d80fc6df
VZ
16\twocolitem{\_\_WXBASE\_\_}{Only wxBase, no GUI features (same as \texttt{wxUSE\_GUI} $== 0$)}
17\twocolitem{\_\_WXCOCOA\_\_}{OS X using Cocoa API}
69a126b0
JS
18\twocolitem{\_\_WXWINCE\_\_}{Windows CE}
19\twocolitem{\_\_WXGTK\_\_}{GTK+}
20\twocolitem{\_\_WXGTK12\_\_}{GTK+ 1.2 or higher}
21\twocolitem{\_\_WXGTK20\_\_}{GTK+ 2.0 or higher}
14aea4f9 22\twocolitem{\_\_WXMOTIF\_\_}{Motif}
65ed0182 23\twocolitem{\_\_WXMOTIF20\_\_}{Motif 2.0 or higher}
73e54eb4
SC
24\twocolitem{\_\_WXMAC\_\_}{Mac OS all targets}
25\twocolitem{\_\_WXMAC\_CLASSIC\_\_}{MacOS for Classic}
26\twocolitem{\_\_WXMAC\_CARBON\_\_}{MacOS for Carbon CFM (running under Classic or OSX) or true OS X Mach-O Builds}
d80fc6df 27\twocolitem{\_\_WXMAC\_OSX\_\_}{MacOS X Carbon Mach-O Builds}
14aea4f9
VZ
28\twocolitem{\_\_WXMGL\_\_}{SciTech Soft MGL (\_\_WXUNIVERSAL\_\_ will be also
29defined)}
30\twocolitem{\_\_WXMSW\_\_}{Any Windows}
31\twocolitem{\_\_WXOS2\_\_}{Identical to \_\_WXPM\_\_}
d80fc6df 32\twocolitem{\_\_WXOSX\_\_}{Any Mac OS X port (either Carbon or Cocoa)}
8e1bf704 33\twocolitem{\_\_WXPALMOS\_\_}{PalmOS}
14aea4f9
VZ
34\twocolitem{\_\_WXPM\_\_}{OS/2 native Presentation Manager}
35\twocolitem{\_\_WXSTUBS\_\_}{Stubbed version ('template' wxWin implementation)}
36\twocolitem{\_\_WXXT\_\_}{Xt; mutually exclusive with WX\_MOTIF, not
fc2171bd 37implemented in wxWidgets 2.x}
14aea4f9 38\twocolitem{\_\_WXX11\_\_}{wxX11 (\_\_WXUNIVERSAL\_\_ will be also defined)}
69a126b0 39\twocolitem{\_\_WXWINE\_\_}{WINE (i.e. WIN32 on Unix)}
14aea4f9
VZ
40\twocolitem{\_\_WXUNIVERSAL\_\_}{wxUniversal port, always defined in addition
41to one of the symbols above so this should be tested first.}
42\twocolitem{\_\_X\_\_}{any X11-based GUI toolkit except GTK+}
43\end{twocollist}
44
9ceeecb9 45There are two wxWidgets ports to Mac OS. One of them, wxMac, exists in two versions: Classic and
d80fc6df
VZ
46Carbon. The Classic version is the only one to work on Mac OS version 8. The
47Carbon version may be built either as CFM or Mach-O (binary format, like ELF)
48and the former may run under OS 9 while the latter only runs under OS X.
49Finally, there is a new Cocoa port which can only be used under OS X. To
50summarize:
9ceeecb9 51
d80fc6df 52\begin{itemize}
9ceeecb9
JS
53\item If you want to test for all Mac platforms, classic and OS X, you
54should test both \texttt{\_\_WXMAC\_\_} and \texttt{\_\_WXCOCOA\_\_}.
55\item If you want to test for any GUI Mac port under OS X, use
56\texttt{\_\_WXOSX\_\_}.
57\item If you want to test for any port under Mac OS X, including, for
58example, wxGTK and also wxBase, use \texttt{\_\_DARWIN\_\_} (see below).
d80fc6df
VZ
59\end{itemize}
60
9ceeecb9
JS
61The convention is to use the \texttt{\_\_WX} prefix for these
62symbols, although this has not always been followed.
14aea4f9 63
a203f6c0 64\subsection{Operating systems}\label{osconst}
14aea4f9
VZ
65
66\begin{twocollist}\itemsep=0pt
67\twocolitem{\_\_APPLE\_\_}{any Mac OS version}
68\twocolitem{\_\_AIX\_\_}{AIX}
69\twocolitem{\_\_BSD\_\_}{Any *BSD system}
70\twocolitem{\_\_CYGWIN\_\_}{Cygwin: Unix on Win32}
0211e0d5 71\twocolitem{\_\_DARWIN\_\_}{Mac OS X using the BSD Unix C library (as opposed to using the Metrowerks MSL C/C++ library)}
14aea4f9
VZ
72\twocolitem{\_\_DATA\_GENERAL\_\_}{DG-UX}
73\twocolitem{\_\_DOS\_GENERAL\_\_}{DOS (used with wxMGL only)}
74\twocolitem{\_\_FREEBSD\_\_}{FreeBSD}
75\twocolitem{\_\_HPUX\_\_}{HP-UX (Unix)}
e2478fde 76\twocolitem{\_\_GNU\_\_}{GNU Hurd}
14aea4f9 77\twocolitem{\_\_LINUX\_\_}{Linux}
ab83849c 78\twocolitem{\_\_MACH\_\_}{Mach-O Architecture (Mac OS X only builds)}
14aea4f9 79\twocolitem{\_\_OSF\_\_}{OSF/1}
8e1bf704 80\twocolitem{\_\_PALMOS\_\_}{PalmOS}
14aea4f9
VZ
81\twocolitem{\_\_SGI\_\_}{IRIX}
82\twocolitem{\_\_SOLARIS\_\_}{Solaris}
83\twocolitem{\_\_SUN\_\_}{Any Sun}
84\twocolitem{\_\_SUNOS\_\_}{Sun OS}
85\twocolitem{\_\_SVR4\_\_}{SystemV R4}
86\twocolitem{\_\_SYSV\_\_}{SystemV generic}
87\twocolitem{\_\_ULTRIX\_\_}{Ultrix}
88\twocolitem{\_\_UNIX\_\_}{any Unix}
89\twocolitem{\_\_UNIX\_LIKE\_\_}{Unix, BeOS or VMS}
90\twocolitem{\_\_VMS\_\_}{VMS}
91\twocolitem{\_\_WINDOWS\_\_}{any Windows}
92\end{twocollist}
93
d80fc6df 94
57ff58bd 95\subsection{Hardware architectures (CPU)}\label{cpuconst}
14aea4f9
VZ
96
97Note that not all of these symbols are always defined, it depends on the
98compiler used.
99
100\begin{twocollist}\itemsep=0pt
101\twocolitem{\_\_ALPHA\_\_}{DEC Alpha architecture}
102\twocolitem{\_\_INTEL\_\_}{Intel i386 or compatible}
748a4684 103\twocolitem{\_\_IA64\_\_}{Intel 64 bit architecture}
14aea4f9
VZ
104\twocolitem{\_\_POWERPC\_\_}{Motorola Power PC}
105\end{twocollist}
106
d80fc6df 107
57ff58bd
WS
108\subsection{Hardware type}\label{hardwareconst}
109
57ff58bd 110\begin{twocollist}\itemsep=0pt
b669780b
JS
111\twocolitem{\_\_SMARTPHONE\_\_}{Generic mobile devices with phone buttons and a small display}
112\twocolitem{\_\_PDA\_\_}{Personal digital assistant, usually with touch screen}
113\twocolitem{\_\_HANDHELD\_\_}{Small but powerful computer, usually with a keyboard}
9ceeecb9
JS
114\twocolitem{\_\_POCKETPC\_\_}{Microsoft-powered PocketPC devices with touch-screen}
115\twocolitem{\_\_WINCE\_STANDARDSDK\_\_}{Microsoft-powered Windows CE devices, for generic Windows CE applications}
116\twocolitem{\_\_WINCE\_NET\_\_}{Microsoft-powered Windows CE .NET devices (\_WIN32\_WCE is 400 or greater)}
b669780b 117\twocolitem{WIN32\_PLATFORM\_WFSP}{Microsoft-powered smartphone}
57ff58bd
WS
118\end{twocollist}
119
d80fc6df 120
a203f6c0 121\subsection{Compilers}\label{compilerconst}
14aea4f9
VZ
122
123\begin{twocollist}\itemsep=0pt
14347204
VZ
124\twocolitem{\_\_BORLANDC\_\_}{Borland C++. The value of the macro corresponds
125to the compiler version: $500$ is $5.0$.}
14aea4f9 126\twocolitem{\_\_DJGPP\_\_}{DJGPP}
69a126b0 127\twocolitem{\_\_DIGITALMARS\_\_}{Digital Mars}
14347204
VZ
128\twocolitem{\_\_GNUG\_\_}{Gnu C++ on any platform, see also
129\helpref{wxCHECK\_GCC\_VERSION}{wxcheckgccversion}}
130\twocolitem{\_\_GNUWIN32\_\_}{Gnu-Win32 compiler, see also
131\helpref{wxCHECK\_W32API\_VERSION}{wxcheckw32apiversion}}
69a126b0 132\twocolitem{\_\_MINGW32\_\_}{MinGW}
14aea4f9
VZ
133\twocolitem{\_\_MWERKS\_\_}{CodeWarrior MetroWerks compiler}
134\twocolitem{\_\_SUNCC\_\_}{Sun CC}
135\twocolitem{\_\_SYMANTECC\_\_}{Symantec C++}
136\twocolitem{\_\_VISAGECPP\_\_}{IBM Visual Age (OS/2)}
14347204
VZ
137\twocolitem{\_\_VISUALC\_\_}{Microsoft Visual C++. The value of this macro
138corresponds to the compiler version: $1020$ for $4.2$ (the first supported
139version), $1100$ for $5.0$, $1200$ for $6.0$ and so on}
14aea4f9 140\twocolitem{\_\_XLC\_\_}{AIX compiler}
14347204
VZ
141\twocolitem{\_\_WATCOMC\_\_}{Watcom C++. The value of this macro corresponds to
142the compiler version, $1100$ is $11.0$ and $1200$ is OpenWatcom.}
69a126b0 143\twocolitem{\_WIN32\_WCE}{Windows CE version}
14aea4f9
VZ
144\end{twocollist}
145
d80fc6df 146
a203f6c0 147\subsection{Miscellaneous}\label{miscellaneousconst}
14aea4f9
VZ
148
149\begin{twocollist}\itemsep=0pt
fc2171bd 150\twocolitem{\_\_WXWINDOWS\_\_}{always defined in wxWidgets applications, see
e2478fde 151also \helpref{wxCHECK\_VERSION}{wxcheckversion}}
14aea4f9
VZ
152\twocolitem{\_\_WXDEBUG\_\_}{defined in debug mode, undefined in release mode}
153\twocolitem{wxUSE\_XXX}{if defined as $1$, feature XXX is active
bf43ff9a 154(the symbols of this form are always defined, use \#if and not \#ifdef to test
14aea4f9 155 for them)}
d5df6918
VZ
156\twocolitem{WX\_PRECOMP}{is defined if precompiled headers (PCH) are in use. In
157this case, \texttt{wx/wxprec.h} includes \texttt{wx/wx.h} which, in turn,
158includes a number of wxWidgets headers thus making it unnecessary to include
159them explicitly. However if this is not defined, you do need to include them
160and so the usual idiom which allows to support both cases is to first include
161\texttt{wx/wxprec.h} and then, inside \texttt{#ifndef WX\_PRECOMP}, individual
162headers you need.}
b9e34846 163\twocolitem{\_UNICODE and UNICODE}{both are defined if wxUSE\_UNICODE is set to $1$}
002568cc
VZ
164\twocolitem{wxUSE\_GUI}{this particular feature test macro is defined to $1$
165when compiling or using the library with the GUI features activated, if it is
166defined as $0$, only wxBase is available.}
fc2171bd 167\twocolitem{wxUSE\_BASE}{only used by wxWidgets internally (defined as $1$ when
002568cc 168building wxBase code, either as a standalone library or as part of the
fc2171bd 169monolithic wxWidgets library, defined as $0$ when building GUI library only)}
78603ad2
VZ
170\twocolitem{wxNO\_RTTI}{is defined if the compiler RTTI support has been switched off}
171\twocolitem{wxNO\_EXCEPTIONS}{is defined if the compiler support for C++
172exceptions has been switched off}
173\twocolitem{wxNO\_THREADS}{if this macro is defined, the compilation options
174don't include compiler flags needed for multithreaded code generation. This
175implies that wxUSE\_THREADS is $0$ and also that other (non wx-based) threading
176packages cannot be used neither.}
14aea4f9
VZ
177\end{twocollist}
178