Don't use gcc extension for QByteArrayLiteral neither

This extension doesn't work for e.g. default arguments
in function declarations.

Change-Id: I32b7afa6e01b6af55fb2409179b4fd94cb04cd8d
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Lars Knoll 2012-06-11 16:15:39 +02:00 committed by Qt by Nokia
parent 08b3aceffe
commit 087f279fff
2 changed files with 1 additions and 17 deletions

View File

@ -161,22 +161,6 @@ struct QByteArrayDataPtr
}()) \
/**/
#elif defined(Q_CC_GNU)
// We need to create a QByteArrayData in the .rodata section of memory
// and the only way to do that is to create a "static const" variable.
// To do that, we need the __extension__ {( )} trick which only GCC supports
# define QByteArrayLiteral(str) \
QByteArray(__extension__ ({ \
enum { Size = sizeof(str) - 1 }; \
static const QStaticByteArrayData<Size> qbytearray_literal = { \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER(Size), \
str }; \
QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; \
holder; \
})) \
/**/
#endif
#ifndef QByteArrayLiteral

View File

@ -1880,7 +1880,7 @@ void tst_QByteArray::movablity()
void tst_QByteArray::literals()
{
#if defined(Q_COMPILER_LAMBDA) || defined(Q_CC_GNU)
#if defined(Q_COMPILER_LAMBDA)
QByteArray str(QByteArrayLiteral("abcd"));
QVERIFY(str.length() == 4);