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:
parent
08b3aceffe
commit
087f279fff
@ -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
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user