c++ - Compilando C ++ 11 con g ++



2 Answers

Puedes comprobar tu g++ por comando:

which g++
g++ --version

Esto le dirá qué compilador es actualmente lo que está apuntando.

Para cambiar a g++ 4.7 (suponiendo que lo haya instalado en su máquina), ejecute:

sudo update-alternatives --config gcc

There are 2 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path              Priority   Status
------------------------------------------------------------
  0            /usr/bin/gcc-4.6   60        auto mode
  1            /usr/bin/gcc-4.6   60        manual mode
* 2            /usr/bin/gcc-4.7   40        manual mode

Luego seleccione 2 como selección (Mi máquina ya apunta a g++ 4.7, entonces el *)

Una vez que cambia el compilador, vuelva a ejecutar g++ --version para verificar que el cambio haya ocurrido correctamente.

Ahora compila tu programa con

g++ -std=c++11 your_file.cpp -o main
Question

Estoy intentando actualizar mi compilador de C ++ a C ++ 11. He buscado un poco y he llegado a la conclusión de que tengo que usar el indicador -std=c++0x o -std=gnu++0x , pero no sé muchas cosas acerca de los indicadores. ¿Alguien puede ayudarme? (Estoy usando Ubuntu 12.04.)

Aquí está el error que recibo del compilador cuando intento usar una biblioteca que está incluida en C ++ 11 (es decir, matriz):

#include <array>
#include <iostream>

int main()
{
    std::array<int, 3> arr = {2, 3, 5};
    ...
}

Este archivo requiere soporte de compilador y biblioteca para el próximo estándar ISO C ++, C ++ 0x. Este soporte es actualmente experimental y debe habilitarse con las opciones del compilador -std = c ++ 0x o -std = gnu ++ 0x.




Si desea mantener las extensiones del compilador GNU, use -std = gnu ++ 0x en lugar de -std = c ++ 0x. Aquí hay una cita de la página del manual:

El compilador puede aceptar varios estándares básicos, como c89 o c ++ 98, y dialectos GNU de esos estándares, como gnu89 o gnu ++ 98. Al especificar un estándar base, el compilador aceptará todos los programas que sigan ese estándar y aquellos que usen extensiones GNU que no lo contradigan. Por ejemplo, -std = c89 desactiva ciertas funciones de GCC que son incompatibles con ISO C90, como las palabras clave "asm" y "typeof", pero no otras extensiones GNU que no tienen un significado en ISO C90, como omitir el término medio de una expresión "?:". Por otro lado, al especificar un dialecto GNU de un estándar, todas las funciones que admite el compilador están habilitadas, incluso cuando esas características cambian el significado del estándar básico y algunos programas de conformidad estricta pueden ser rechazados. El estándar en particular se usa por -pedantic para identificar qué características son extensiones GNU dada esa versión del estándar. Por ejemplo, std = gnu89 -pedantic advertiría sobre el estilo de C ++ // comentarios, mientras que -std = gnu99 -pedantic no lo haría.




Related