Lo nuevo de Visual C++ en Visual Studio 2012

Este documento presenta características nuevas y mejoradas de Visual C++ en Visual Studio 2012.

Para obtener información sobre otras adiciones en Visual Studio 2012, vea Novedades de Visual Studio 2012.

[!NOTA]

Para obtener información sobre las características de (IDE) del entorno de desarrollo integrado para los programadores que crean aplicaciones de Tienda Windows, vea Desarrollo de aplicaciones del almacén de Windows utilizando Visual Studio 2012.

Compatibilidad mejorada de normas C++11

Hh409293.collapse_all(es-es,VS.110).gifBiblioteca de plantillas estándar

  • Compatibilidad para nuevo Encabezados de STL: <atomic>, <chrono>, <condition_variable>, <filesystem>, <future>, <mutex>, <ratio>, y <thread>.

  • Para optimizar el uso de los recursos de memoria, los contenedores son menores ahora.Por ejemplo, en modo de lanzamiento x86 con la configuración predeterminada, std::vector ha encogido a partir de 16 bytes en Visual Studio 2010 a 12 bytes en Visual Studio 2012, y std::map ha encogido a partir de 16 bytes en Visual Studio 2010 a 8 bytes en Visual Studio 2012.

  • Permitida pero no requerido por el estándar C++11, se han implementado los iteradores de SCARY.Para obtener más información, vea el documento Asignación y inicialización de iterador de SCARY de PDF.

Hh409293.collapse_all(es-es,VS.110).gifOtras mejoras C++11

  • Intervalo- basado en los bucles. Puede escribir bucles más eficaces que funcionen con matrices, contenedores STL, y las colecciones de Windows en tiempo de ejecución en el formulario for (for-range-declaration :expression ).Esto forma parte del lenguaje básica.Para obtener más información, vea Instrucción for basada en intervalo (C++).

  • Lambdas estado, que son los bloques de código que comienza con un presentador vacío lambda [] y no capturan ninguna variable local, es ahora implícitamente convertible a punteros a función a standard C++11.Para obtener más información, vea Expresiones lambda en C++.

  • Compatibilidad de las enumeraciones de Ámbito. La enum- clave de C++ enum class se admite ahora.El código siguiente muestra cómo esta enum- clave difiere del comportamiento anterior de enum.

    enum class Element { Hydrogen, Helium, Lithium, Beryllium };
    void func1(Element e);
    func1(Hydrogen); // error C2065: 'Hydrogen' : undeclared identifier
    func1(Element::Helium); // OK
    

compatibilidad con el desarrollo de la aplicación de Tienda Windows

Compilador y vinculador de Visual C++

  • Auto-vectorizer. El compilador analiza bucles en el código y, cuando sea posible, emite las instrucciones que utilizan los registros y las instrucciones vectorial que están presentes en todos los procesadores modernos.Esto hace que los bucles se ejecutan más rápidamente.(Las instrucciones de procesador se denominan SSE, para las extensiones de Streaming SIMD).No tiene que habilitar o solicitar esta optimización porque se aplica automáticamente.

  • Auto-parallelizer. El compilador puede analizar bucles en el código y emitir instrucciones que mejoran los cálculos por los núcleos o de varios procesadores.Esto puede hacer que los bucles se ejecutan más rápidamente.Debe solicitar esta optimización porque no está habilitada de forma predeterminada.En muchos casos, ayuda a incluir #pragma loop(hint_parallel(N)) en el código inmediatamente antes de bucles que desee paralelizado.

    Auto - vectorizer y automático - parallelizer pueden funcionar juntos para mejorar los cálculos a través de varios núcleos y el código en cada base utilizan los registros vectoriales.Para obtener más información, vea Errores y advertencias de Auto-Parallelization.

Nuevo en Visual Studio 2012 Update 1

  • Destino Windows XP cuando compile el código de C++.

    Puede utilizar el compilador y las bibliotecas de Visual C++ como destino de Windows XP y Windows Server 2003.Para obtener más información, vea Configurar 11 programas de C++ para Windows XP.

Compatibilidad de programación paralelo

Hh409293.collapse_all(es-es,VS.110).gifC++ aceleró el paralelismo masivo (AMP)

El AMP de C++ acelera la ejecución del código de C++ aprovechándose de hardware dato- paralelo que normalmente aparece como GPU en una tarjeta gráfica discreta.El modelo de programación C++ AMP incluye matrices multidimensionales, indexado, transferencia de memoria, mosaicos y una biblioteca de funciones matemáticas.Con las extensiones de lenguaje de AMP de C++ y restricciones del compilador, puede controlar cómo los datos se mueve de CPU al GPU y la devuelve.Para obtener más información, vea C++ AMP (C++ Accelerated Massive Parallelism).

Hh409293.collapse_all(es-es,VS.110).gifC++ aceleró Massive Paralelismo (AMP) que la depuración y la generación de perfiles

Depuración. La experiencia de depuración para aplicaciones que utilizan el AMP de C++ como destino del GPU es como la depuración para otras aplicaciones de C++.Esto incluye nuevas adiciones paralelas de depuración que anteriormente mencionados.Vea Depurar código de GPU.

La generación de perfiles. Allí ahora está perfilando compatibilidad para la actividad de GPU basado en el AMP de C++ y otros modelos de programación de Direct3D-based.Vea Gráfico de actividad de GPU.

Hh409293.collapse_all(es-es,VS.110).gifMejoras paralelos generales de programación

Con el hardware moviéndose a las arquitecturas núcleos y de mucho- shell, los desarrolladores pueden confiar deja de frecuencias de reloj cada vez mayor de los solo- núcleos.Compatibilidad de programación paralelo en Runtime de simultaneidad permite a los desarrolladores aprovechar estas nuevas arquitecturas.

En Visual Studio 2010, bibliotecas eficaces de la paralelización de C++ como Parallel patterns library se introdujeron, así como características para aprovechar las ventajas de simultaneidad expresando canalizaciones sofisticadas de flujo de datos.En Visual Studio 2012, estas bibliotecas se han extendido para proporcionar un mejor rendimiento, más control, y admite más enriquecido para los modelos paralelos que los programadores deben la mayoría.El alcance de proporcionar ahora incluye:

Hh409293.collapse_all(es-es,VS.110).gifMejoras paralelos de depuración generales

Además de la ventana Tareas paralelas y la ventana Pilas paralelas, Visual Studio 2012 proporciona una nueva ventana Inspección paralela para poder examinar los valores de una expresión en todos los subprocesos y procesos, y realiza la ordenación y el filtrado del resultado.También puede utilizar dispone los visualizadores para extender la ventana, y puede aprovechar el nuevo compatibilidad de multi- proceso en todas las ventanas de herramientas.Para obtener más información, vea Cómo: Utilizar la Ventana Inspección paralela.

IDE

Las herramientas en el IDE de Visual Studio tienen mejoras significativas para ayudarle a ser más productivo al código de C++.Para obtener más información sobre las mejoras del IDE, vea Lo más destacado de Visual Studio 2012.

  • Compatibilidad de las plantillas de Visual Studio. Ahora puede utilizar la tecnología de las plantillas de Visual Studio el proyecto y las plantillas de elementos de C++ para crear.

  • Carga asincrónica de la solución. Ahora los proyectos son partes fundamentales cargan de asynchronously-the de solución primera - en esa puede empezar a trabajar más rápidamente.

  • Implementación automatizada para la depuración remota. La implementación de los archivos para la depuración remota en Visual C++ se ha simplificado.La opción de implementar en el menú contextual del proyecto copia automáticamente al equipo remoto los archivos que se especifican en las propiedades de configuración de depuración.Copiar los archivos en el equipo remoto se requiere manualmente no más.Para obtener más información, vea Depuración remota de un proyecto compilado localmente.

  • C++/CLI IntelliSense. C++/CLI ahora es totalmente compatible con IntelliSense.Las características de IntelliSense como información rápida, Ayuda de parámetros, miembros enumerados, y Finalización auto funcionan ahora para C++/CLI.Además, el otro IntelliSense y mejoras del IDE enumerados en este documento también funcionan para C++/CLI.

  • Información sobre herramientas más avanzadas de IntelliSense. La información sobre herramientas de la información de C++ IntelliSense Quick ahora muestran información más enriquecida de estilo de los Comentarios de documentación XML.Si está utilizando la API de a biblioteca- para el ejemplo, C++ Amp- con Comentarios de documentación XML, la información sobre herramientas de IntelliSense muestra más información que simplemente la declaración.Además, si el código tiene Comentarios de documentación XML, la información sobre herramientas de IntelliSense mostrará información más completa.

  • Construcciones de código de C++. En el código estructural está disponible para el modificador, si- otro, para el bucle, y otras construcciones de código básico, en la lista desplegable de los miembros de la lista.Seleccione un fragmento de código de la lista para incrustarlo en el código y después para completar la lógica necesaria.También puede crear dispone de fragmentos de código personalizados para su uso en el editor.Para obtener más información, vea Fragmentos de código.

  • Mejoras de Listas de miembros. La lista desplegable de los miembros de la lista aparece automáticamente cuando escribe código en el editor de código.Los resultados se filtran, solo para mostrar miembros pertinentes mientras se escribe.Puede controlar la clase de la lógica de filtrado que sea utilizada por el miembro Lista- en el cuadro de diálogo opciones en Editor de texto, C/C++, Opciones avanzadas.Para obtener más información, vea Utilizar IntelliSense.

  • Color semántica. Los tipos, las enumeraciones, las macros, y otros tokens de C++ tienen ahora coloreado de forma predeterminada.Para obtener más información, vea Escribir código en el editor de código y texto.

  • El resaltado de la referencia. La selección de un símbolo ahora resalta todas las instancias de símbolos en el archivo actual.Presione la flecha de Ctrl+Shift+Up o la flecha de Ctrl+Shift+Down para desplazarse entre las referencias resaltado.Puede activar esta característica desactivado en el cuadro de diálogo opciones, en Editor de texto, C/C++, Opciones avanzadas.

Herramientas de administración del ciclo de vida de la aplicación

Hh409293.collapse_all(es-es,VS.110).gifAnálisis de código estático

El análisis estático de C++ se ha actualizado para proporcionar información de contexto más enriquecida de error, más reglas de análisis, y mejores resultados del análisis.En la nueva ventana Análisis de código, puede filtrar los mensajes por palabra clave, proyecto, y gravedad.Al seleccionar un mensaje en la ventana, la línea del código en el mensaje lo activa se resalta en el editor de código.Ciertas advertencias de C++, las líneas de código fuente de las listas de mensajes que muestran la ruta de acceso de ejecución que conducen a la advertencia; puntos de decisión y razones de tomar que la ruta específica se resalta.

El análisis de código se incluye en la mayoría de las ediciones de Visual Studio 2012.En Professional, Premium, y las últimas ediciones, todas las reglas están incluidas.En las ediciones Express para Windows 8 y Windows phone, simplemente las advertencias más críticas están incluidas.El análisis de código no se incluye en la edición Express para Web.

A continuación se muestran algunos otros avances de análisis de código:

  • Nueva ayuda de las advertencias de simultaneidad evita los errores de simultaneidad asegurándose de que usa las disciplinas correctas de bloqueo en programas multiproceso de C/C++.El analizador detecta infracciones del contrato condiciones de carrera, inversiones del orden de bloqueo, el bloqueo posibles del llamador y destinatario, las operaciones no coincidentes de la sincronización, y otros errores de simultaneidad.

  • Puede especificar reglas de C++ que desea aplicar a las ejecuciones de análisis de código con los conjuntos de reglas.

  • En la ventana Análisis de código, puede insertar en el código fuente un pragma que suprime una advertencia seleccionado.

  • Puede mejorar la exactitud e integridad de análisis de código estático utilizando la nueva versión de Lenguaje de anotación de código fuente de Microsoft (SAL) para describir cómo una función utiliza parámetros, de las suposiciones que crea sobre ellas, y las garantías que crea cuando finaliza.

  • Compatibilidad con proyectos de la C++.

Para obtener más información sobre cómo mejorar la calidad del código, vea Analizar la calidad de la aplicación mediante herramientas de análisis del código.

Hh409293.collapse_all(es-es,VS.110).gifMarco actualizado de la prueba unitaria

Utilice el nuevo marco de pruebas unitarias de C++ en Visual Studio para escribir pruebas unitarias de C++.Agregue un nuevo proyecto de prueba unitaria a la solución existente de C++ ubicar la plantilla Proyecto de prueba unitaria de C++ en categoría Visual C++ en el cuadro de diálogo nuevo proyecto.Inicie la escritura de las pruebas unitarias en el código auxiliar generado el código de TEST_METHOD en Unittest1.cpp el archivo.Cuando se escribe el código de prueba, compile la solución.Si desea ejecutar las pruebas, abra una ventana Explorador de pruebas unitarias eligiendo Vista, Otras ventanas, Explorador de pruebas unitarias y, a continuación, en el menú contextual para el caso de prueba que desea, elija Ejecutar prueba seleccionada.Después de que finalice la ejecución de pruebas, puede ver los resultados de pruebas y la información adicional del seguimiento de pila en la misma ventana.Vea Comprobar código utilizando pruebas unitarias y Crear y ejecutar pruebas unitarias en una aplicación de la Tienda Windows.

Hh409293.collapse_all(es-es,VS.110).gifGráficos de dependencias de arquitectura

Para entender el código mejor, ahora puede generar gráficos de dependencias para el binario, la clase, el espacio de nombres, y archivos de inclusión en una solución.En la barra de menú, elija Arquitectura, Generar gráfico de dependencias, y después Para la solución o Para el archivo de inclusión para generar un gráfico de dependencias.Cuando se completa la compilación del gráfico, puede explorarla expandiendo cada nodo, obtendrá las relaciones de dependencia moviendo entre los nodos, y examinar el código fuente eligiendo Ver contenido en el menú contextual para un nodo.Para generar un gráfico de dependencias para los archivos de inclusión, en el menú contextual para un archivo de código fuente de *.cpp o un archivo de encabezado de *.h, elija Generar Gráficos de archivos de inclusión.Vea Visualizar dependencias de código en gráficos de dependencias.

Hh409293.collapse_all(es-es,VS.110).gifExplorador de arquitectura

Mediante el Explorador de arquitectura, puede explorar los activos en la solución, los proyectos, o archivos de C++.En la barra de menú, elija Arquitectura, Windows, explorador de arquitectura.Puede seleccionar un nodo que está interesado, por ejemplo, Vista de clases.En este caso, el derecho de la ventana de herramientas se expande con una lista de espacios de nombres.Si selecciona un espacio de nombres, una nueva columna muestra una lista de las clases, los structs, y de las enumeraciones de este espacio de nombres.Puede continuar explorando estos activos, o regrese a la columna a la izquierda el extremo izquierdo para iniciar otra consulta.Vea Buscar código con el explorador de arquitectura.

Hh409293.collapse_all(es-es,VS.110).gifCobertura de código

La cobertura de código se ha actualizado para instrumentar binarios dinámicamente en tiempo de ejecución.Esto reduce la sobrecarga de la configuración y proporciona mejor rendimiento.También puede recopilar datos de código- cobertura de pruebas unitarias para la aplicación de C++.Para obtener más información sobre cómo crear y ejecutar las pruebas unitarias, vea la sección del marco de pruebas unitarias de este documento.Cuando haya creado las pruebas unitarias de C++, puede utilizar Explorador de pruebas unitarias para detectar pruebas de la solución.Para ejecutar las pruebas unitarias y recopilar datos de cobertura de código para ellos, en Explorador de pruebas unitarias, elija Analizar cobertura de código.Puede examinar los resultados de la cobertura de código en Resultados de la cobertura de código ventana- en la barra de menús, elija prueba, Windows, Resultados de la cobertura de código.Vea Usar cobertura de código para determinar la cantidad de código que se está probando.

Vea también

Conceptos

Novedades de Visual Studio 2012

Otros recursos

Blog del equipo de Visual C++

Visual C++ en Visual Studio 2012