only VC++ >= 7.0 has __COUNTER__
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30033 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
cd0c48001c
commit
871cc651b7
@ -203,16 +203,31 @@
|
||||
#define wxCOMPILE_TIME_ASSERT(expr, msg) \
|
||||
class wxMAKE_UNIQUE_ASSERT_NAME { \
|
||||
unsigned int msg: expr; \
|
||||
wxMAKE_UNIQUE_ASSERT_NAME(){wxUnusedVar(msg);} \
|
||||
wxMAKE_UNIQUE_ASSERT_NAME() { wxUnusedVar(msg); } \
|
||||
}
|
||||
#else
|
||||
#define wxCOMPILE_TIME_ASSERT(expr, msg) \
|
||||
struct wxMAKE_UNIQUE_ASSERT_NAME { unsigned int msg: expr; }
|
||||
#endif
|
||||
|
||||
/*
|
||||
When using VC++ 6 with "Edit and Continue" on, the compiler completely
|
||||
mishandles __LINE__ and so wxCOMPILE_TIME_ASSERT() doesn't work, provide a
|
||||
way to make "unique" assert names by specifying a unique prefix explicitly
|
||||
*/
|
||||
#define wxMAKE_UNIQUE_ASSERT_NAME2(text) wxCONCAT(wxAssert_, text)
|
||||
|
||||
/* for compatibility only, don't use any more, not needed */
|
||||
#define wxCOMPILE_TIME_ASSERT2(expr, msg, text) wxCOMPILE_TIME_ASSERT(expr, msg)
|
||||
#ifdef __WATCOMC__
|
||||
/* avoid "unused symbol" warning */
|
||||
#define wxCOMPILE_TIME_ASSERT2(expr, msg, text) \
|
||||
class wxMAKE_UNIQUE_ASSERT_NAME2(text) { \
|
||||
unsigned int msg: expr; \
|
||||
wxMAKE_UNIQUE_ASSERT_NAME2(text) { wxUnusedVar(msg); } \
|
||||
}
|
||||
#else
|
||||
#define wxCOMPILE_TIME_ASSERT2(expr, msg, text) \
|
||||
struct wxMAKE_UNIQUE_ASSERT_NAME2(text) { unsigned int msg: expr; }
|
||||
#endif
|
||||
|
||||
/* helpers for wxCOMPILE_TIME_ASSERT below, for private use only */
|
||||
#define wxMAKE_BITSIZE_MSG(type, size) type ## SmallerThan ## size ## Bits
|
||||
|
@ -473,11 +473,11 @@ 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) */
|
||||
#ifdef __VISUALC__
|
||||
#if defined(__VISUALC__) && (__VISUALC__ >= 1300)
|
||||
/*
|
||||
__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
|
||||
inside the macros. Luckily VC7 has another standard macro which can be
|
||||
used like this and is even better than __LINE__ because it is globally
|
||||
unique.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user