2012-02-15 964 views
8

Actualmente estoy usando C++ en el entorno de Windows. Estoy usando Visual Studio 2008 con Service Pack 1.¿Qué versión de C++ estoy usando?

Nunca pensé en la versión de C++ a menos que hasta que llegué a conocer C++11. Parece que hay diferentes versiones como estándar ANSI, C++ 98 Standard etc.

  1. ¿Cómo llego a saber qué versión de C++ estoy usando?

  2. Si no tengo Visual Studio sé que puedo usar otros compiladores como TC para compilar mi código C++. En ese caso, ¿cómo puedo saber qué versión de C++ está usando el compilador?

  3. ¿Los cambios se realizan en versiones consecutivas de C++ sobre conceptos de programación o solo en el diseño de idioma?

+4

Ya no hay C++ 0x; es solo C++ 11. –

+3

Está usando C++ 03 (o cualquier parte de él compatible con VS08). Tendrá que mirar la documentación de cada compilador para ver qué versión de C++ admite cada uno de ellos; en realidad, muchos solo admitirán "la mayoría de las funciones" de una versión y no serán perfectamente compatibles con el estándar. –

+1

@SethCarnegie: Para ser justos, gracias a la eliminación de 'export', hay un buen cambio en GCC y Clang alcanzará la conformidad total de C++ 11 (menos errores, por supuesto). Es probable que Microsoft nunca obtenga la búsqueda de dos fases implementada, por lo que no alcanzará la conformidad independientemente de la cantidad de características de C++ 11 que implementen. –

Respuesta

8

No es tan simple como un control de versión.

Cada compilador que admite C++ 11 admite subconjunto diferente de C++ 11. Ningún compilador todavía anuncia el cumplimiento total con C++ 11, por razones obvias.

La especificación C++ 11 requiere que se defina una macro predefinida, __cplusplus que tiene el valor 201103L. Sin embargo, usted no puede confiar solo en esta macro. No en código real.

En su lugar, debe confiar en las macros específicas del compilador para saber cuándo compila y qué versión de ese compilador está utilizando. O puede usar Boost.Config para ayudarlo a detectar si se admiten características específicas.

+1

Existe una hoja de ruta para las características planificadas de C++ 11 y C++ 14 en Visual Studio: https: //blogs.msdn.com/b/somasegar/archive/2013/06/28/cpp-conformance-roadmap.aspx? Redirected = true – Chris

1

Visual Studio 2008? Puedes olvidarte de C++ 11. Visual Studio 2010 tiene algo de C++ 11 pero tiene errores. Visual Studio 2012 tiene mejores C++ 11 para algunas funciones, pero faltan otras. Visual Studio 2013 tiene nuevo soporte para plantillas variadic y otras características. Pero VS está detrás de otros compiladores como gcc en C++ 11. Puede descargar ediciones gratuitas gratuitas para todas estas versiones.

Cuestiones relacionadas