2010-02-12 2 views
2

컴파일 오류를 일으키는 : 그러나QT4 : QMap는 "엄격한 앨리어싱 규칙"나는 ++ C에서 Qt는 4.5에서 다음과 같은 데이터 구조를 만들려고 해요

QMap<int, QMap<QString, QVector<QPointF> > > animation;, 내 코드에서이 라인을 포함 다음과 같은 오류가 발생합니다.

cc1plus: warnings being treated as errors 
In file included from XXX/XXX/XXX/MainWindow.qt.C.tmp.C:113: 
/usr/lib/qt4/include/QtCore/qmap.h: In member function ‘void MainWindow::exportAnn()’: 
/usr/lib/qt4/include/QtCore/qmap.h:588: error: dereferencing pointer ‘y’ does break strict-aliasing rules 
/usr/lib/qt4/include/QtCore/qmap.h:586: note: initialized from here 
Command exited with non-zero status 1 

조직에서 모든 경고를 오류로 처리해야하므로이 오류를 무시할 수 없습니다. 이것은 Qt의 버그입니까, 아니면 내가 잘못하고있는 것이 있습니까?

+0

Qt 프로젝트에보고해야 할 것 같습니다. 나는 아무도 여기 당신을 도울 수 없을 것이라고 생각하지 않습니다. – LiraNuna

+0

어떤 컴파일러를 사용하고 있습니까? 이러한 별명 지정 규칙을 적용 할 수있는 특수 컴파일 플래그는 무엇입니까? – shoosh

+0

g ++ 4.4.1을 사용하고 있습니다. 컴파일 플래그는 -Wall, -Werror, -g, -O3 및 -fPIC입니다. – rcv

답변

0

당신이 언급 코드는 그래서 문제가 아마 Qt는 4.6.1로 업그레이드 고정 인텔/맥 OS X의

$ cat a.cpp #include <QtCore> 
void foo (QMap<int, QMap<QString, QVector<QPointF> > > &map) 
    { map.clear(); } 
$ g++-4.4-fsf -c -DQT_CORE_LIB -DQT_SHARED -I/Library/Frameworks/QtCore.framework/Versions/4/Headers a.cpp -W -Wall -Werror -g -O3 -fPIC 
$ 

에 Qt는 4.6.1과 GCC 4.4.1와 함께 잘 작동합니다. 컴파일러 타겟 관련 버그가 아니라면 어떤 플랫폼을 컴파일하고 있는지 알려주지 않았습니다.

관련 문제