O que há de Novo no Visual C++ 2010
Este documento introduz novos e avançados recursos do Visual C++ em Visual Studio 2010.
Vinculador e compilador do visual C++
automática de palavra-chave
O palavra-chave auto tem uma nova finalidade. Use o significado de padrão da auto palavra-chave para declarar uma variável cujo tipo é deduzido a partir da expressão de inicialização na declaração da variável. O /Zc:auto opção de compilador invoca o novo ou o significado anterior a auto palavra-chave.
Especificador de tipo de decltype
O o especificador de tipo de decltype retorna o tipo de uma expressão especificada. Use o decltype especificador de tipo em combinação com o auto palavra-chave para declarar um tipo complexo ou conhecidos apenas para o compilador. Por exemplo, use a combinação para declarar uma função do modelo cujo tipo de retorno depende dos tipos de seus argumentos de modelo. Ou, para declarar um modelo de função que chama a função do outra e, em seguida, retorna o tipo de retorno da função chamada.
Lambda Expressions
Funções de lambda tem um corpo de função, mas nenhum nome. Funções de lambda combinam as melhores características de ponteiros de função e os objetos de função.
Usar uma função lambda por si só, como um parâmetro de função do modelo em vez de um objeto de função, ou junto com o auto palavra-chave para declarar uma variável cujo tipo é lambda.
Referência de Rvalue
O rvalue Declarador de referência (& &) declara uma referência a um rvalue. Uma referência de rvalue permite que você use move a semântica e encaminhamento perfeito a escrever mais eficiente de construtores, funções e modelos.
Declaração de static_assert
A static_assert uma declaração de software em tempo de compilação, ao contrário de outros mecanismos de declaração de teste em tempo de execução de testes de declaração. Se a declaração falhar, a compilação falhará e uma mensagem de erro especificado é emitida.
palavras-chave nullptr e __nullptr
O compilador Visual C++ permite que você use o nullptr palavra-chave com código nativo ou com código gerenciado. O nullptr palavra-chave indica que um identificador de objeto, o ponteiro de interior ou o tipo de ponteiro nativo não aponta para um objeto. O compilador interpretará nullptr ser código gerenciado, quando você usa o /clr opção de compilador e o código nativo quando você não usar o /clr opção.
Específicos do Microsoft __nullptr palavra-chave tem o mesmo significado que nullptr, mas ele se aplica ao código nativo somente. Se você compilar o código C/C++ nativo usando o /clr opção de compilador, o compilador não pode determinar se o nullptr palavra-chave é um nativo ou um gerenciado term. Para tornar sua intenção, desmarque essa opção para o compilador, use o nullptr palavra-chave para especificar o termo gerenciado, e __nullptr para especificar o term. nativo
Opção de compilador de /ZC:trigraphs
Por padrão, o suporte para trigraphs está desativado. Use o /Zc:trigraphs opção de compilador para habilitar o suporte de trigraphs.
Um trigraph consiste em dois consecutivos pontos de interrogação (?) seguidos por um terceiro caractere exclusivo. O compilador substitui um trigraph com o caractere de pontuação correspondente. Por exemplo, o compilador substitui o??= trigraph com o caractere # (tralha). Use trigraphs em arquivos de código-fonte C, usam um conjunto de caracteres que não contenham determinados caracteres de pontuação.
Nova opção de Otimização Guiada por perfil
PogoSafeMode é uma nova opção de Otimização Guiada por perfil permite que você especifique se deseja usar o modo de segurança ou modo rápido quando você otimizar o seu aplicativo. Modo de segurança é thread-safe, mas é mais lento do que o modo rápido. Modo rápido é o comportamento padrão.
Nova /clr:nostdlib de opção do Common Language Runtime (CLR)
Uma nova opção é adicionada para /clr (Common Language Runtime Compilation). Se versões diferentes da mesmas bibliotecas são incluídas, um erro de compilação será emitido. A nova opção permite excluir bibliotecas CLR padrão para que o programa possa usar uma versão especificada.
Nova detect_mistmatch de Diretiva pragma
A Diretiva pragma detect_mismatch permite que você colocar uma marca nos arquivos que é comparado a outras marcas que têm o mesmo nome. Se houver vários valores para o mesmo nome, o vinculador emite um erro.
XOP intrínsecos, FMA4 intrínsecos e LWP intrínsecos
Novas funções intrínsecas foram adicionadas para dar suporte a XOP, FMA4, e LWP tecnologias de processador. Use __cpuid, __cpuidex para determinar qual processador tecnologias são suportadas em um computador específico.
Projetos do Visual C++ e o sistema de compilação
MSBuild
Projetos e soluções do visual C++ agora são criados usando MSBuild. exe, que substitui o vcbuild. exe. MSBuildé a mesma ferramenta de compilação flexíveis, extensível, baseado em XML é usada por outras linguagens de Visual Studio e tipos de projeto. Por essa alteração, arquivos de projeto do Visual C++ agora usam um formato de arquivo XML e têm a extensão de nome de arquivo .vcxproj. Arquivos de projeto do Visual C++ de versões anteriores do Visual Studio são convertidos automaticamente para o novo formato de arquivo. Para obter mais informações, consulte MSBuild (Visual C++).
Diretórios VC + +
O diretórios VC + + configuração agora está localizada em dois lugares. Use páginas de propriedades do projeto para definir valores de-projeto para diretórios VC + +. Use o Gerenciador de propriedade e uma folha de propriedades para definir global, os valores de-configuration para diretórios VC + +.
Dependências de projeto a projeto
Em versões anteriores, definidas dependências entre projetos foram armazenadas no arquivo de solução. Quando essas soluções são convertidas para o novo formato de arquivo de projeto, as dependências são convertidas em projeto a projeto referências. Essa alteração pode afetar aplicativos porque os conceitos de dependências de solução e referências de projeto a projeto são diferentes.
Macros e variáveis de ambiente
O novo _ITERATOR_DEBUG_LEVEL macro invoca o suporte à depuração para iteradores. Usar essa macro, em vez do antigo _SECURE_SCL e _HAS_ITERATOR_DEBUGGING macros.
Bibliotecas Visual C++
Bibliotecas de Runtime de simultaneidade
O O Runtime de simultaneidade framework oferece suporte a aplicativos e componentes que são executam simultaneamente e é a estrutura de programação de aplicativos simultâneos no Visual C++. Para dar suporte à programação de aplicativos simultâneos, o Biblioteca paralela de padrões (PPL) fornece contêineres de uso gerais e algoritmos para a realização de paralelismo refinado. O Biblioteca de agentes assíncronos fornece um modelo de programação baseada em ator e uma mensagem, passando a interfaces de fluxo de dados refinado e processamento de tarefas.
Biblioteca C++ padrão
A lista a seguir descreve a muitas das alterações que foram feitas à biblioteca C++ padrão.
O novo referência de rvalue recurso de linguagem C++ foi usado para implementar move a semântica e encaminhamento perfeito para muitas funções na Standard Template Library. Mova a semântica e encaminhamento perfeito melhorar consideravelmente o desempenho das operações que alocar ou atribuir parâmetros ou variáveis.
Referências de Rvalue também são usadas para implementar a nova unique_ptr classe, que é um tipo de ponteiro inteligente mais seguro que o auto_ptr classe. O unique_ptr é a classe Movível , mas não copyable, implementa uma semântica de propriedade estrito sem afetar a segurança e funciona bem com contêineres estão cientes das referências de rvalue. O auto_ptr classe é obsoleto.
Quinze novas funções, por exemplo, find_if_not, copy_if, e is_sorted, foram adicionados para o <algorithm> cabeçalho.
No <memory> cabeçalho, o novo make_shared função é uma maneira conveniente, robusta e eficiente para tornar um ponteiro compartilhado para um objeto ao mesmo tempo em que o objeto é construído.
Listas vinculadas singularmente são suportadas pelo <forward_list> cabeçalho.
O novo cbegin, cend, crbegin, e crend funções de membro fornecem uma const_iterator que move para frente ou para trás através de um recipiente.
O <system_error> o processamento de erros do sistema de baixo nível de suporte de cabeçalho e modelos relacionados.
Os membros da exception_ptr classe pode ser usado para exceções de transporte entre threads.
O <codecvt> cabeçalho suporta a conversão de várias codificações de caracteres Unicode em outras codificações.
O <allocators> cabeçalho define vários modelos que ajudam a alocar e liberar os blocos de memória para contêineres baseados no nó.
Existem várias atualizações para o <random> cabeçalho.
Biblioteca do Microsoft Foundation Class (MFC)
Recursos do Windows 7
MFC oferece suporte a muitos recursos do Windows 7, por exemplo, Ribbon user interface (UI), a barra de tarefas, listas de saltos, miniaturas com guias, visualizações em miniatura, a barra de progresso, sobreposição de ícone e indexação de pesquisa. Como automaticamente, o MFC oferece suporte a muitos recursos do Windows 7, talvez não precise modificar seu aplicativo existente. Para oferecer suporte a outros recursos em novos aplicativos, use o mfc Application Wizard para especificar a funcionalidade que você deseja usar.
Reconhecimento de multiTouch
MFC oferece suporte a aplicativos que possuem uma interface de usuário MultiTouch, por exemplo, os aplicativos são escritos para o sistema operacional do Microsoft Surface. Um aplicativo MultiTouch pode lidar com o Windows touch mensagens e gesto mensagens, que são combinações de mensagens de toque. Basta registrar seu aplicativo para o toque e o sistema operacional e eventos do gesto roteará eventos MultiTouch seus manipuladores de eventos.
Reconhecimento de DPI alto
Por padrão, aplicativos MFC estão agora reconhecimento de DPI alta. Se um aplicativo for alta DPI (altas pontos por polegada) ciente, o sistema operacional pode ser dimensionado windows, texto e outros elementos de interface do usuário para a resolução de tela atual. Este significa que uma imagem em escala é mais provável que sejam dispostos corretamente e não recortado ou serrilhamento.
Gerenciador de reinicialização
O Gerenciador de reinicialização salva os documentos e reinicia o aplicativo se fecha inesperadamente ou reinicia automaticamente. Por exemplo, você pode usar o Gerenciador de reinicialização para iniciar o aplicativo fechada por uma atualização automática. Para obter mais informações sobre como configurar seu aplicativo para usar o Gerenciador de reinicialização, consulte Como: Adicionar o suporte do Gerenciador de reinicialização.
CTaskDialog
O CTaskDialog classe pode ser usada em vez do padrão AfxMessageBox caixa de mensagem. O CTaskDialog classe exibe e coleta mais informações do que o faz de caixa de mensagem padrão.
Biblioteca de SafeInt
O novo Biblioteca de SafeInt realiza operações aritméticas seguras que conta para o estouro de inteiros. Esta biblioteca também compara os diferentes tipos de inteiros.
Novas macros de Active Template Library (ATL)
Foram adicionadas novas macros para ATL para expandir a funcionalidade do PROP_ENTRY_TYPE e PROP_ENTRY_TYPE_EX. PROP_ENTRY_INTERFACEe PROP_ENTRY_INTERFACE_EX permitem que você adicionar uma lista de CLSIDs válido. PROP_ENTRY_INTERFACE_CALLBACKe PROP_ENTRY_INTERFACE_CALLBACK_EX permitem que você especifique uma função de retorno de chamada para determinar se um CLSID é válido.
avisos
A maioria dos /Analyze (análise de código da empresa) avisos foram removidos das bibliotecas C Run-Time (CRT), MFC e ATL.
Suporte de animação e D2D
MFC agora oferece suporte a animação e elementos gráficos do Direct2D. A biblioteca MFC tem várias novas classes MFC e funções de suporte a essa funcionalidade. Há também duas orientações de novas para mostrar como adicionar um objeto D2D e um objeto de animação a um projeto. Essas orientações são Walkthrough: Adding a D2D Object to an MFC Project e Walkthrough: Adding Animation to an MFC Project.
IDE
Em Visual C++ 2010, o ambiente de desenvolvimento integrado (IDE) possui melhorias significativas no desempenho, precisão, escalabilidade e ferramentas para ajudá-lo a ser produtivo.
Melhor IntelliSense
IntelliSense para o Visual C++ foi completamente remodelado para ser capaz de lidar com projetos maiores, mais rápido e mais precisas. Para obter essa melhoria, o IDE faz uma distinção entre como um desenvolvedor exibe e modifica o código-fonte e como o IDE usa as configurações de projeto e código de origem para criar uma solução.
Devido essa separação de funções, navegação recursos, como Modo de exibição de classe e o novo Navegue para caixa de diálogo são manipuladas por um sistema que se baseia em um novo arquivo de banco de dados da área de trabalho (. sdf) SQL Server substitui o antigo Nenhuma compilação procurar (. arquivo de NCB). Recursos de IntelliSense como, por exemplo, informações rápidas, AutoCompletar e Ajuda do parâmetro analisa as unidades de conversão somente quando necessário. Recursos de híbrido como, por exemplo, o novo A hierarquia de chamar janela usar uma combinação dos recursos de IntelliSense e procurar.
Como IntelliSense processa apenas as informações que você precisa no momento, o IDE está mais responsivo. Além disso, como informações mais atualizadas, janelas e exibições do IDE são mais precisas. Finalmente, como a infra-estrutura do IDE é melhor organizado, mais capazes e mais dimensionável, ele pode lidar com projetos maiores.
Erros de IntelliSense aprimorada
O IDE melhor detecta erros que podem causar a perda de IntelliSense e exibe ondulados em vermelho abaixo delas. Além disso, o IDE relata os erros de IntelliSense para o Janela de lista de erros. Para exibir o código que está causando o problema, clique duas vezes o erro de Janela de lista de erros.
# include o recurso preenchimento automático
O IDE suporta preenchimento automático para o # include palavra-chave. Quando você digita #include, o IDE cria uma caixa de listagem drop-down de arquivos de cabeçalho válido. Se você continuar digitando um nome de arquivo, o IDE filtra a lista com base em sua entrada. Em qualquer momento, você pode selecionar da lista o arquivo que você deseja incluir. Isso permite que você incluir rapidamente os arquivos sem saber o nome exato do arquivo.
Navegue até
O Navegue para caixa de diálogo permite você procura todos os símbolos e os arquivos no seu projeto que correspondam a uma seqüência de caracteres especificada. Os resultados da pesquisa são revisados imediatamente, conforme você digita caracteres adicionais em sua seqüência de pesquisa. O resultados campo de comentários informa o número de itens encontrados e ajuda você a decidir se deseja restringir sua pesquisa. O /Escopo do tipo, local, e visualização campos de comentários ajudam a ambigüidade dos itens que tenham nomes semelhantes. Além disso, você pode estender esse recurso para dar suporte a outras linguagens de programação.
Criação de perfis e depuração paralela
O depurador Visual Studio está ciente do Runtime de simultaneidade e ajuda a solucionar problemas de aplicativos de processamento paralelo. Você pode usar a nova ferramenta de simultaneidade profiler para visualizar o comportamento geral do seu aplicativo. Além disso, você pode usar as novas janelas de ferramenta para visualizar o estado das tarefas e suas pilhas de chamadas.
Designer de faixa de opções
O O Designer de faixa de opções é um editor gráfico que permite criar e modificar um MFC faixa de opções da interface do usuário. A interface do usuário final é representado por um arquivo de recurso baseado em XML (.mfcribbon-ms). Para os aplicativos existentes, você pode capturar a interface do usuário da faixa de opções atual temporariamente adicionar algumas linhas de código e, em seguida, invocando o O Designer de faixa de opções. Após a criação do arquivo de recurso da faixa de opções, você pode substituir o código UI de faixa de opções de manuscrita, com algumas instruções que carregar o recurso de faixa de opções.
Hierarquia de chamada
O A hierarquia de chamar janela permite que você navegue para todas as funções que são chamadas de uma função específica ou para todas as funções que chamam uma função específica.
Tools
Assistente de classes do MFC
Visual C++ 2010traz de volta o bem-avaliado Assistente de classes do MFC ferramenta. O Assistente de classes do MFC é uma maneira conveniente para adicionar classes de mensagens, e variáveis para um projeto sem ter que modificar manualmente os conjuntos de arquivos de origem.
Assistente de controle do ATL
O Assistente de controle ATL não mais automaticamente preenche a ProgID campo. Se um controle ATL não tiver um ProgID, outras ferramentas podem não funcionar com o proprietário. Um exemplo de uma ferramenta que exige controles tenham um ProgID é o Inserir controle ativo caixa de diálogo. Para obter mais informações sobre a caixa de diálogo, consulte Inserir a caixa de diálogo de controle de ActiveX.
Referência do Microsoft Macro Assembler
A adição da YMMWORD o tipo de dados suporta os operandos de multimídia de 256 bits são incluídos nas instruções de extensões de vetor avançado (AVX) da Intel.
Consulte também
Conceitos
Alterações significativas no Visual C++