Estoy tratando de compilar usando g++
y las banderas -std=c++11
o c++0x
.
Sin embargo, obtengo este error
cc1plus: error: unrecognized command line option "-std=c++11"
g ++ --versión
g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-std=c++0x
con g ++g++ --version
. Luego publique el número de versión aquí.g++-
en la ventana de su consola.Respuestas:
Viendo desde su versión de G ++, necesita actualizarlo mal. C ++ 11 solo ha estado disponible desde G ++ 4.3. La versión más reciente es la 4.7.
En versiones anteriores a G ++ 4.7, tendrá que usar
-std=c++0x
, para versiones más recientes que puede usar-std=c++11
.fuente
Citando del sitio web de gcc :
Entonces, probablemente use una versión de g ++ que no es compatible con
-std=c++11
. Tratar-std=c++0x
lugar.La disponibilidad de las funciones de C ++ 11 es solo para las versiones> = 4.3.
fuente
deberías probar esto
fuente
También obtuve el mismo error, compilando con el indicador -D lo solucionó, intente esto:
g ++ -Dstd = c ++ 11
fuente
std::vector<int> v = {1, 2, 3};
para probar y arrojaba todo tipo de errores sobre él (errores diferentes que sin la bandera, aunque, curiosamente).-D
argumento de la línea de comando es equivalente a insertar un#define
en su código fuente. Entonces este comando es como tener#define std c++11
. ¿Te imaginas entonces cómostd::string
se redefinirác++11::string
? No es muy útil en absoluto.