kernel/qmetaobject.cpp: In static member function `static QByteArray
QMetaObject::normalizedType(const char*)':
kernel/qmetaobject.cpp:946: error: syntax error before `+' token
kernel/qmetaobject.cpp:947: error: request for member `data' in `stackbuf',
which is of non-aggregate type `QVarLengthArray<char, 256> ()(...)'
kernel/qmetaobject.cpp:949: error: request for member `data' in `stackbuf',
which is of non-aggregate type `QVarLengthArray<char, 256> ()(...)'
gmake[1]: *** [.obj/debug-static/qmetaobject.o] Error 1
错误原因在于,语法问题。。。
看来写QT的人,也没有注意到,系统差异的存在。
QByteArray QMetaObject::normalizedType(const char *type)
{
QByteArray result;
if (!type || !*type)
return result;
--> QVarLengthArray<char> stackbuf(int(strlen(type)) + 1);
qRemoveWhitespace(type, stackbuf.data());
int templdepth = 0;
qNormalizeType(stackbuf.data(), templdepth, result);
return result;
}
箭头所指的就是错误提示的位置,,作者用int(strlen(type)),,,而我们正常的编译器,标准写法应该是(int)strlen(type)...
为了,不修改原著,,,在int身上再加一个括号。。(int)(strlen(type)).