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:
Argumentos de modelo padrão para modelos de função.
Operadores de conversão explícita.
Funções excluídas.
Funções usadas como padrão.*
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çã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çã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