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:
@@ -210,9 +210,24 @@
|
|||||||
struct wxMAKE_UNIQUE_ASSERT_NAME { unsigned int msg: expr; }
|
struct wxMAKE_UNIQUE_ASSERT_NAME { unsigned int msg: expr; }
|
||||||
#endif
|
#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 */
|
#ifdef __WATCOMC__
|
||||||
#define wxCOMPILE_TIME_ASSERT2(expr, msg, text) wxCOMPILE_TIME_ASSERT(expr, msg)
|
/* 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 */
|
/* helpers for wxCOMPILE_TIME_ASSERT below, for private use only */
|
||||||
#define wxMAKE_BITSIZE_MSG(type, size) type ## SmallerThan ## size ## Bits
|
#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 */
|
/* 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 */
|
/* 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) */
|
/* 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
|
__LINE__ handling is completely broken in VC++ when using "Edit and
|
||||||
Continue" (/ZI option) and results in preprocessor errors if we use it
|
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
|
used like this and is even better than __LINE__ because it is globally
|
||||||
unique.
|
unique.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user