QT/E 编译错误

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)).

 

 

你可能感兴趣的:(function,qt,编译器)