2011-02-15 7 views
13

Windows (Qt Creator 2.0.1)에서 Qt Creator에 새로운 C++ 0x 기능을 사용하려고합니다.Qt Creator가있는 C++ 0x

스레드 Configuring the GCC compiler switches in Qt, Qt Creator, and QMake을 읽고 QMAKE_CXXFLAGS += -std=c++0x을 .pro 파일에 추가했습니다.

#include <memory> 

int main() 
{ 
} 

컴파일러 오류 : Qt는 창조주가이 간단한 코드 나에게 매우 이상한 오류를 준다 그 후

':: swprintf' '

선언되지 않은 :: vswprintf '가 선언되지 않았습니다.

내 코드 fr을 컴파일하려고합니다. 명령을 g++ test.cpp --std=c++0x으로 변경하고 동일한 오류가 발생합니다.

그렇다면 Qt MinGW 컴파일러의 문제점은 무엇입니까? Qt Creator에서 C++ 0x 기능을 사용할 수 있습니까?

+1

중복 질문 : http://stackoverflow.com/questions/4713713/include-iostream-with-std-c0x-is-broken. 라이브러리 헤더 파일에서'using :: swprintf;'및'using :: vswprintf;'를 주석 처리하면 ssmir의 대답에 언급 된 패치를 볼 수 있습니다. – TonyK

답변

3

먼저 라이브러리 헤더가 종속성을 올바르게 나타내지 않았을 수 있습니다. #include <cstdio> 및 아마도 (불행히도) using namespace std;을 파일 상단에 추가하십시오.

이 작업을 수행하지 못하면 여러 사람들이 MinGW 및 swprintf에 문제가있는 것으로 보입니다. This mailing list post은 다음을 추가 할 것을 제안합니다.

#ifdef WIN32 
#define swprintf _snwprintf 
#endif 

문제가 해결되는지 확인하십시오. (파일 상단에서도 원할 것입니다.)

소스에 미리 정의 된 무작위 정의가 나쁜 생각 인 것 같으면 -D 빌드 플래그를 사용하여 위의 정의를 조건부로 삽입 할 것을 제안합니다. MinGW에 건물.

MinGW의 swprintf와 다른 컴파일러의 차이점에 대해서는 this short discussion도 참조하십시오.

마지막으로, this link은 MinGW에서 __STRICT_ANSI__을 사용할 수있는 플래그와 관련된 문제로 보였고, MinGW 헤더 중 하나에서 몇 줄을 주석 처리하여 문제를 해결할 것을 제안합니다. 이 해킹을 결정할 경우 간단하게 #ifndef __STRICT_ANSI__을 추가하는 것이 좋습니다.

+0

':: swprintf'와':: vswprintf'에'__STRICT_ANSI__'을 추가하면 컴파일됩니다. 감사 ;) – UmmaGumma