2011-02-15 16 views
13

Estoy tratando de usar nuevas características de C++ 0x en Qt Creator en Windows (Qt Creator 2.0.1).C++ 0x con Qt Creator

leí el hilo Configuring the GCC compiler switches in Qt, Qt Creator, and QMake y ha añadido QMAKE_CXXFLAGS += -std=c++0x a .pro archivo.

Después de que Qt Creator me da errores muy extraños en este simple código:

#include <memory> 

int main() 
{ 
} 

errores del compilador:

':: swprintf' no ha sido declarada

':: vswprintf 'no ha sido declarado

Intento compilar mi código fr om la línea de comando con el comando g++ test.cpp --std=c++0x y obtenga el mismo error.

¿Qué pasa con el compilador Qt MinGW? ¿Es posible usar las características de C++ 0x en Qt Creator?

+1

Pregunta duplicada: http://stackoverflow.com/questions/4713713/include-iostream-with-std-c0x-is -broken. Todo lo que tiene que hacer es comentar 'using :: swprintf;' y 'using :: vswprintf;' en el archivo del encabezado de la biblioteca; consulte el parche mencionado en la respuesta de ssmir. – TonyK

Respuesta

3

En primer lugar, podría ser que los encabezados de la biblioteca simplemente no representan sus dependencias correctamente. Intente agregar un #include <cstdio> y quizás (desafortunadamente) un using namespace std; a su archivo en la parte superior.

Al fallar, varias personas parecen haber tenido problemas con MinGW y swprintf. This mailing list post sugiere que se añada lo siguiente:

#ifdef WIN32 
#define swprintf _snwprintf 
#endif 

ver si se soluciona el problema. (También lo desea en la parte superior del archivo.)

Si el preadolar aleatorio define su origen como una mala idea para usted, sugiero usar -D indicadores de compilación para insertar condicionalmente la definición anterior cuando esté construyendo en MinGW.

Consulte también this short discussion sobre las diferencias entre swprintf en MinGW frente a otros compiladores.

Finalmente, en su defecto, this link parece atribuir el problema a un problema con indicadores que habilitan __STRICT_ANSI__ en MinGW, y sugiere comentar un par de líneas en uno de los encabezados MinGW para solucionar el problema. Sugeriría agregar un #ifndef __STRICT_ANSI__ más simple alrededor de ellos si decides ir con este truco.

+0

Agrego '__STRICT_ANSI__' para ':: swprintf' y' :: vswprintf' y está compilado. Gracias ;) – UmmaGumma

Cuestiones relacionadas