\membersection{wxCONCAT}\label{wxconcat}
-\func{}{wxCONCAT}{\param{}{x}, \param{}{y}}
+\func{}{wxCONCAT}{\param{}{x1}, \param{}{x2}}
-This macro returns the concatenation of two tokens \arg{x} and \arg{y}.
+\func{}{wxCONCAT3}{\param{}{x1}, \param{}{x2}, \param{}{x3}}
+
+\func{}{wxCONCAT4}{\param{}{x1}, \param{}{x2}, \param{}{x3}, \param{}{x4}}
+
+\func{}{wxCONCAT5}{\param{}{x1}, \param{}{x2}, \param{}{x3}, \param{}{x4}, \param{}{x5}}
+
+These macro return the concatenation of the tokens passed as their arguments.
+Unlike when using the preprocessor \texttt{##} operator, the arguments undergo
+the macro expansion before being concatenated.
\membersection{wxDECLARE\_APP}\label{wxdeclareapp}
#define wxCONCAT_HELPER(text, line) text ## line
#define wxCONCAT(text, line) wxCONCAT_HELPER(text, line)
+#define wxCONCAT3(x1, x2, x3) wxCONCAT(wxCONCAT(x1, x2), x3)
+#define wxCONCAT4(x1, x2, x3, x4) wxCONCAT(wxCONCAT3(x1, x2, x3), x4)
+#define wxCONCAT5(x1, x2, x3, x4, x5) wxCONCAT(wxCONCAT4(x1, x2, x3, x4), x5)
+
/* wxSTRINGIZE works as the preprocessor # operator but also works with macros */
#define wxSTRINGIZE_HELPER(x) #x
#define wxSTRINGIZE(x) wxSTRINGIZE_HELPER(x)