From ab55f9f39b8c7716500d74dd32ae813df76623c4 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sun, 22 Sep 2013 05:17:22 +0200 Subject: Q_STATIC_ASSERT: use __COUNTER__ instead of __LINE__ if the compiler supports it When using __LINE__ to construct unique names, use of Q_STATIC_ASSERT is limited to one instance per line of code. On compilers that support __COUNTER__ (GCC and MSVC, probably others), we can get around that limitation by using that one to always get a new unique number, so use it. Change-Id: I89bcfaa32376b7a665f03e4275e89b13fa3e650d Reviewed-by: Thiago Macieira --- src/corelib/global/qglobal.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/corelib/global') diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index b4830bda1f..b1a22ddf03 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -656,8 +656,13 @@ template <> class QStaticAssertFailure {}; #define Q_STATIC_ASSERT_PRIVATE_JOIN(A, B) Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B) #define Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B) A ## B +#ifdef __COUNTER__ +#define Q_STATIC_ASSERT(Condition) \ + enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __COUNTER__) = sizeof(QStaticAssertFailure)} +#else #define Q_STATIC_ASSERT(Condition) \ enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __LINE__) = sizeof(QStaticAssertFailure)} +#endif /* __COUNTER__ */ #define Q_STATIC_ASSERT_X(Condition, Message) Q_STATIC_ASSERT(Condition) #endif -- cgit v1.2.3