diff --git a/include/wx/defs.h b/include/wx/defs.h index 32142feef6..4e4ca874d1 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -473,7 +473,18 @@ typedef int wxWindowID; /* appending the current line number to the given identifier to reduce the */ /* probability of the conflict (it may still happen if this is used in the */ /* headers, hence you should avoid doing it or provide unique prefixes then) */ -#define wxCONCAT_LINE(text) wxCONCAT(text, __LINE__) +#ifdef __VISUALC__ + /* + __LINE__ handling is completely broken in VC++ when using "Edit and + Continue" (/ZI option) and results in preprocessor errors if we use it + inside the macros. Luckily it has another standard macro which can be + used like this and is even better than __LINE__ because it is globally + unique. + */ +# define wxCONCAT_LINE(text) wxCONCAT(text, __COUNTER__) +#else /* normal compilers */ +# define wxCONCAT_LINE(text) wxCONCAT(text, __LINE__) +#endif #define wxMAKE_UNIQUE_NAME(text) wxCONCAT_LINE(text) /* symbolic constant used by all Find()-like functions returning positive */