Novidades do Visual C++ no Visual Studio 2013

Este documento apresenta recursos novos e aprimorados do Visual C++ no Visual Studio 2013.

Para obter informações sobre outras adições no Visual Studio 2013, consulte Novidades no Visual Studio 2013.

Suporte aprimorado a padrões ISO C/C++

Compilador

  • Oferece suporte a estes recursos de idioma ISO C++11:

  • Oferece suporte a estes recursos de idioma ISO C99:

    • _Bool

    • Literais compostos.

    • Inicializadores designados.

    • Mistura de declarações com código.

  • A conversão de literal de cadeia de caracteres em valores modificáveis pode ser desabilitada usando a nova opção de compilador /Zc:strictStrings.No C++98, a conversão de literais de cadeia de caracteres em char * (e dos literais de cadeia de caracteres largos em wchar_t *) foi preterida.No C++11, a conversão foi totalmente removida.Embora o compilador possa estar estritamente em conformidade com o padrão, em vez disso ele fornece a opção /Zc:strictStrings de modo que você possa controlar a conversão.Por padrão, a opção está desativada.Observe que quando você estiver usando essa opção no modo de depuração, a STL não será compilada.

  • Conversões de referência de rvalue/lvalue. Com referências de rvalue, o C++11 pode distinguir claramente entre lvalues e rvalues.Anteriormente, o compilador do Visual C++ não fornecia isso em cenários específicos de conversão.Uma nova opção de compilador, /Zc:rvalueCast, foi adicionada para tornar o compilador compatível com o Documento de trabalho da linguagem C++(consulte a seção 5.4, [expr.cast]/1).

    O comportamento padrão quando essa opção não é especificada é o mesmo no Visual Studio 2012.

ObservaçãoObservação

* Em funções usadas como padrão, não há suporte ao uso de =default para solicitar construtores de movimento de membros e operadores de atribuição de movimento.

Bibliotecas C99

As declarações e as implementações são adicionadas para funções ausentes nestes cabeçalhos: math.h, ctype.h, wctype.h, stdio.h, stdlib.h e wchar.h.Também são adicionados novos cabeçalhos complex.h, stdbool.h, fenv.h e inttypes.h, e implementações para todas as funções declaradas neles.Há novos cabeçalhos de wrapper do C++ (ccomplex, cfenv, cinttypes, ctgmath) e vários outros estão atualizados (ccomplex, cctype, clocale, cmath, cstdint, cstdio, cstring, cwchar e cwctype).Para obter mais informações, consulte Suporte à biblioteca C99 no Visual Studio 2013.

Biblioteca de modelos padrão

  • Suporte para operadores de conversão explícitos do C++11, listas de inicialização, enums com escopo e modelos variadic.

  • Todos os contêineres agora suportam os requisitos de elementos refinados do C++11.

  • Suporte para estes recursos do C++14:

    • "Functores transparentes de operador" less<>, greater<>, plus<>, multiplies<> e assim por diante.

    • make_unique<T>(args...) e make_unique<T[]>(n)

    • Funções de não membros cbegin()/cend(), rbegin()/rend() e crbegin()/crend().

  • <atomic> recebeu vários aprimoramentos de desempenho.

  • <type_traits> recebeu as principais correções de estabilização e de código.

Alterações significativas

Esse suporte aprimorado para padrões ISO C/C++ pode exigir alterações do código existente de modo que ele fique em conformidade com o C++11 e seja compilado corretamente no Visual C++ no Visual Studio 2013.Para obter mais informações, consulte Alterações significativas do Visual C++.

Para obter mais informações sobre a nova linguagem C++11/14 e sobre recursos do STL, consulte Suporte a recursos do C++11 (C++ moderno) e Recursos, correções e alterações significativas do C++11/14 STL no Visual Studio 2013

Aprimoramentos da biblioteca do Visual C++

  • O SDK do C++ REST foi adicionado.Tem uma implementação moderna do C++ de serviços REST.Para obter mais informações, consulte SDK do C++ REST.

  • O suporte de textura AMP do C++ foi aprimorado.Inclui agora suporte para mipmaps e novos modos de amostragem.

  • As tarefas de PPL dão suporte a várias tecnologias de agendamento e depuração assíncrona.Novas APIs permitem a criação de tarefas de PPL para resultados normais e condições de exceção.

Desempenho do aplicativo C++

  • O Vetorizador Automático agora reconhece e otimiza mais padrões do C++ para tornar a execução do seu código mais rápida.

  • Melhorias de qualidade de código daplataforma ARM e da microarquitetura Atom.

  • A convenção de chamada __vectorcall foi adicionada.Passe argumentos de tipo de vetor usando a convenção de chamada __vectorcall para usar registros de vetor.

  • Novas opções de vinculador. As opções /Gw (compilador) e /Gy (montador) permitem otimizações de vinculador para gerar binários mais enxutos.

  • Suporte a memória compartilhada C++ AMP para reduzir ou eliminar a cópia de dados entre a CPU e a GPU.

  • Melhorias da Otimização Guiada por Perfil (PGO):

    • Melhorias de desempenho de uma redução no conjunto de trabalho de aplicativos otimizados usando PGO.

    • Nova PGO para desenvolvimento de aplicativos de Windows Store.

Suporte ao desenvolvimento de aplicativos Windows Store

  • Suporte para tipos boxed em estruturas de valor. Agora você pode definir tipos de valor usando campos que podem ser nulos, por exemplo, IBox<int>^ em oposição a int.Isso significa que os campos podem ter um valor ou serem iguais a nullptr.

  • Informações de exceção mais completas. C++/CX oferece suporte ao novo modelo de erros do Windows que habilita a captura e a propagação de informações completas de exceção através da ABI (interface binária de aplicativo); isso inclui pilhas de chamada e cadeias de caracteres de mensagens personalizadas.

  • Object::ToString() agora é virtual. Agora é possível substituir ToString em tipos de referência definidos pelo usuário no Tempo de Execução do Windows.

  • Suporte para APIs preteridas. As APIs públicas do Tempo de Execução do Windows agora podem ser preteridas e apresentar uma mensagem personalizada que aparecerá como um aviso de compilação, além de poderem oferecer orientação sobre a migração.

  • Melhorias do depurador. Suporte para depuração de interoperação nativa/JavaScript, diagnóstico de exceção do Tempo de Execução do Windows e depuração de código assíncrono (Tempo de Execução do Windows e PPL).

ObservaçãoObservação

Além dos recursos específicos do C++- e das melhorias descritas nesta seção, outras melhorias feitas no Visual Studio também podem ajudar você a escrever aplicativos Windows Store melhores.Para obter detalhes sobre esses recursos, consulte o Guia de recursos do Windows 8.1.Para obter mais informações sobre novos modelos de aplicativo, consulte Modelos de projeto em C#, VB e C++ para aplicativos da Windows Store.Para obter uma lista de novos recursos da plataforma, consulte Windows 8.1 Preview: novas APIs e recursos.

Aprimoramentos no diagnóstico

  • Melhorias do depurador. Suporte para depuração assíncrona e depuração Apenas Meu Código.

  • Categorias de análise de código. Agora é possível exibir a saída categorizada do analisador de código para ajudar a localizar e corrigir defeitos de código.

  • Diagnósticos XAML. Agora é possível diagnosticar problemas da interface do usuário e de capacidade de bateria no XAML.

  • Melhorias nos gráficos e na depuração da GPU.

    • Captura e reprodução remotas em dispositivos reais.

    • Depuração simultânea do C++ AMP e da CPU.

    • Diagnóstico do tempo de execução C++ AMP aprimorado.

    • Depuração de rastreamento do sombreador de cálculo de HLSL.

Aprimoramentos de elementos gráficos 3D

  • Suporte do pipeline de conteúdo da imagem para formato DDS alfa pré-multiplicado.

  • O Editor de Imagens usa internamente o alfa pré-multiplicado na renderização e, assim, evita a renderização de artefatos como halos escuros.

  • Editores de imagens e modelos. A criação de filtros definidos pelo usuário é suportada agora no Shader Designer no Editor de Imagens e no Editor de Modelos.

IDE e produtividade

O IDE do Visual Studio tem melhorias significativas para ajudar você a ser mais produtivo quando programar em C++.

  • Formatação de código aprimorada. É possível aplicar mais configurações de formatação ao seu código de C++.Usando essas configurações, você pode controlar o posicionamento de nova linha de chaves e palavras-chave, recuo, espaçamento e quebra automática de linha. O código é formatado automaticamente quando você conclui instruções e blocos, e quando cola o código em um arquivo.Para alterar as configurações de formatação, na barra de menus no Visual Studio, escolha Ferramentas, Opções, expanda Editor de Texto, C/C++ e os nós de Formatação e, em seguida, faça as alterações.Você também pode usar a caixa Início Rápido para acessar essas opções.

  • Preenchimento de chaves. O código em C++ agora preenche automaticamente os caracteres de fechamento correspondentes a esses caracteres de abertura:

    • { (chave)

    • [ (colchete)

    • ( (parênteses)

    • ' (aspas simples)

    • " (aspas duplas)

  • Recursos adicionais de preenchimento automático do C++.

    • Adiciona o ponto e vírgula para tipos de classe.

    • Preenche parênteses para literais de cadeia de caracteres bruta.

    • Conclui comentários de várias linhas (/* */)

  • Localizar Todas as Referências agora resolve e filtra automaticamente referências de filtros no plano de fundo depois que exibe a lista de correspondências textuais. Para desabilitar a resolução de referências, na barra de menus no Visual Studio, escolha Ferramentas, Opções, expanda os nós Editor de Texto, C/C++ e Avançado, e altere a configuração Desabilitar Resolução em Referências.

Para alterar as configurações de preenchimento de chaves, na barra de menus no Visual Studio, escolha Ferramentas, Opções, expanda os nós Editor de Texto, C/C++ e Geral, e faça as alterações.Você também pode alterar as configurações para todos os idiomas do Visual Studio expandindo os nós Editor de Texto, Todos os Idiomas e Geral.

Para alterar as configurações específicas do C++, na barra de menus, escolha Ferramentas, Opções, expanda os nós Editor de Texto, C/C++ e Avançado, e faça as alterações.

  • Filtragem da lista de membros baseada no contexto. Os membros inacessíveis são filtrados e retirados das listas de membros do IntelliSense. Por exemplo, os membros particulares não são exibidos na lista de membros a menos que você esteja alterando o código que implementa o tipo.Enquanto a lista de membros estiver aberta, pressione Ctrl+J para remover um nível de filtragem (aplica-se somente à janela atual da lista de membros).É possível pressionar Ctrl+J novamente para remover a filtragem textual e exibir todos os membros.

  • Rolagem da ajuda do parâmetro. A assinatura de função exibida na dica de ferramenta de parameter-help agora muda de acordo com o número de parâmetros digitados, em vez de mostrar apenas uma assinatura arbitrária e não atualizá-la com base no contexto atual.A ajuda de parâmetro também funciona corretamente quando exibida em funções aninhadas.

  • Alternância de cabeçalho/arquivo de código. Agora é possível alternar entre um cabeçalho e seu arquivo de código correspondente usando um comando no menu de atalho ou um atalho de teclado.

  • Janela redimensionável Propriedades do Projeto C++.

  • Geração automática de código do manipulador de eventos em C++/CX e em C++/CLI. Quando estiver digitando o código para adicionar um manipulador de eventos em um arquivo de código em C++/CX ou C++/CLI, o editor pode gerar automaticamente a instância delegate e a definição de manipulador de evento.Uma janela de dica de ferramenta aparece quando o código do manipulador de eventos pode ser gerado automaticamente.

  • Aprimoramento de Reconhecimento de DPI. A configuração Reconhecimento de DPI para arquivos de manifesto de aplicativo agora oferece suporte à configuração "Reconhecimento de DPI Alto por Monitor".

  • Alternância mais rápida de configuração. Em grandes aplicativos, a alternância de configurações, principalmente operações de alternância subsequentes, é executada com muito mais rapidez+.

  • Eficiência do tempo de compilação.

    • Compilações mais rápidas. Diversas otimizações e o uso de vários núcleos tornam as compilações mais rápidas, principalmente para projetos grandes.As compilações incrementais para aplicativos C++ que têm referências a C++ WinMD também estão muito mais rápidas.
  • Para obter informações sobre outras adições e aprimoramentos no IDE, consulte Novidades no Visual Studio 2013 e os outros artigos aos quais ele se refere.

Consulte também

Conceitos

Novidades no Visual Studio 2013

Outros recursos

Blog da equipe do Visual C++