Partilhar via


Novidades do C++ no Visual Studio 2022

O Visual Studio 2022 traz muitas atualizações e correções para o compilador e as ferramentas do Microsoft C++. O IDE do Visual Studio também oferece melhorias significativas no desempenho e na produtividade e agora é executado nativamente como um aplicativo de 64 bits.

Novidades do C++ no Visual Studio versão 17.14

Lançado em maio de 2025

Para mais informações sobre Ver
Novidades para desenvolvedores C++ O que há de novo para desenvolvedores C++ no Visual Studio 2022 17.14
Standard Library (STL) mesclou recursos C++26 e C++23, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Changelog STL 17,14
Novos recursos no IDE Notas de versão do Visual Studio 2022 versão 17.14
Atualizações de linguagem C++ Atualizações de linguagem C++ no MSVC no Visual Studio 2022 17.14
Melhorias na conformidade da linguagem C++ Melhorias de conformidade C++, alterações de comportamento e correções de bugs no Visual Studio 2022 17.14

Um rápido destaque de algumas das novas funcionalidades:

  • A depuração dinâmica C++ permite depurar código otimizado sem afetar o desempenho. Para obter mais informações, consulte Depuração dinâmica C++.

  • Recursos C++23 implementados (requer /std:c++latest ou /std:c++23preview):

  • Gere automaticamente comentários de documentação com o GitHub Copilot. Para obter mais informações, consulte Introdução à geração automática de comentários de documentação no Visual Studio.

  • Use o Seletor de Modelo no Visual Studio para selecionar seu modelo de IA para o GitHub Copilot. Para obter mais informações, consulte Alterando o modelo de IA para o Copilot Chat. Esta captura de tela mostra o Seletor de Modelo na parte inferior da janela de bate-papo do GitHub Copilot:

    Uma captura de tela da janela de bate-papo do GitHub Copilot com o menu suspenso Seletor de modelos realçado.

    A lista suspensa do Seletor de Modelo está aberta. As opções incluem: GPT-4o, o3-mini, Claude 3.7 Sonnet Thinking, e outros.

  • Melhorias na integração do Unreal Engine:

    • O depurador do Visual Studio C++ agora oferece suporte a Blueprints do Unreal Engine.
    • Comandos para criar arquivos, módulos e plug-ins estão disponíveis nativamente no Visual Studio.
  • O novo sinalizador do compilador /forceInterlockedFunctions seleciona dinamicamente entre as instruções de carregamento e armazenamento exclusivo do Armv8.0 ou as instruções atômicas da Extensão de Sistema Grande (LSE) do Armv8.1, com base na capacidade da CPU em tempo de execução.

  • Adicionado suporte para completações baseadas em IntelliSense e informações rápidas para módulos CMake no Visual Studio. Você pode visualizar todos os módulos CMake disponíveis e quando você passa o mouse sobre um módulo CMake referenciado, o IntelliSense fornece mais informações sobre o módulo selecionado:

    Uma captura de ecrã do IntelliSense a explicar os C Make Print Helpers.

    A captura de tela é de uma edição no arquivo C Make Lists .txt. O cursor está em include ( CMakePrintHelpers ). Intellisense diz: Funções de conveniência para imprimir propriedades e variáveis, úteis para depuração.

    Quando se começa a digitar um nome de módulo CMake nos arquivos de script CMake CMakeLists.txt ou outros, o IntelliSense fornece uma lista de módulos disponíveis para seleção.

    Uma captura de tela do Intellisense para uma declaração do tipo

    A captura de tela é de uma edição no arquivo C Make Lists .txt. O cursor está em include ( C Make. O menu suspenso Intellisense contém entradas para C Make Add Fortran Subdirectory, C Make Dependent Option e muito mais.

  • Guidelines Support Library (GSL) 4.2.0: Esta versão inclui melhorias de desempenho para o gsl::span, novos recursos e melhor alinhamento com os padrões C++. Para obter mais informações, consulte Announcing Guidelines Support Library v4.2.0.

O que há de novo no C++ no Visual Studio versão 17.13

Lançado em fevereiro de 2025

Para mais informações sobre Ver
Novidades para desenvolvedores C++ O que há de novo para desenvolvedores C++ no Visual Studio 2022 17.13
Recursos de biblioteca padrão (STL) C++26 e C++23, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Changelog STL 17.13
Novos recursos no IDE Notas de versão do Visual Studio 2022 versão 17.13
Atualizações de linguagem C++ atualizações do compilador MSVC no Visual Studio 2022 17.13
Melhorias na conformidade da linguagem C++ melhorias de conformidade C++, alterações de comportamento e correções de bugs no Visual Studio 2022 17.13

Um rápido destaque de algumas novidades:

  • melhorarias da linguagem C++

    • Experimente os recursos de visualização do C++23 definindo o C++ Language Standard como /std:c++23preview. Essa configuração habilita os recursos e correções de bugs mais recentes do C++23. Para obter mais informações, consulte /std (Specify Language Standard Version).

    • Suporte para o sufixo literal size_t do C++23, que ajuda a evitar truncamentos ou incompatibilidades em comparações assinadas, especialmente ao escrever ciclos. Por exemplo:

      // Infinite loop if v.size > max unsigned int 
      for (auto i = 0u; i < v.size(); ++i)
      { 
        ...
      } 
      
      // Fixed because of uz literal 
      for (auto i = 0uz; i < v.size(); ++i)
      { 
        ...
      } 
      
    • Suporte para comprimentos vetoriais para geração de código em x86 e x64. Para obter mais informações, consulte /vlen.

    • Suporte para Intel Advanced Vetor Extensions 10 versão 1. Para obter mais informações sobre /arch:AVX10.1, consulte /arch (x64).

  • Aprimoramentos da biblioteca padrão

    • Suporte de biblioteca padrão para couroutines. Neste exemplo de P2502R2, a função fib é uma corrotina. Quando a instrução co_yield é executada, fib é suspensa e o valor é retornado ao chamador. Você pode retomar a corrotina fib mais tarde para produzir mais valores sem precisar de qualquer manipulação manual do estado.

      std::generator<int> fib()
      { 
        auto a = 0, b = 1; 
      
        while (true)
        { 
            co_yield std::exchange(a, std::exchange(b, a + b)); 
        }
      } 
      
      int answer_to_the_universe()
      { 
        auto rng = fib() | std::views::drop(6) | std::views::take(3); 
        return std::ranges::fold_left(std::move(range), 0, std::plus{}); 
      } 
      
  • Movido system_clock, high_resolution_clocke chrono_literals de um cabeçalho interno comumente incluído para <chrono>. Se vires erros de compilação que indiquem que tipos como system_clock ou literais definidos pelo utilizador como 1729ms não são reconhecidos, inclui <chrono>.

  • Melhorou as implementações vetorizadas dos construtores de strings bitset, basic_string::find_last_of(), remove(), ranges::removee das famílias de algoritmos minmax_element() e minmax().

  • Adicionadas implementações vetorizadas de:

    • find_end() e ranges::find_end para elementos de 1 byte e 2 bytes.
    • basic_string::find() e basic_string::rfind() para uma subcadeia de caracteres.
    • basic_string::rfind() para um único personagem.
  • Relatórios de defeitos do C++23 mesclados:

    • P3107R5 Permitir uma implementação eficiente de <print>.
    • P3235R3std::print Mais tipos mais rápidos com menos memória.
  • Copiloto do GitHub

    • O GitHub Copilot Free já está disponível. Obtenha 2.000 finalizações de código e 50 solicitações de bate-papo por mês sem nenhum custo.

    • As finalizações de código do GitHub Copilot fornecem sugestões de preenchimento automático em linha à medida que você codifica. Para melhorar a experiência dos desenvolvedores C++, o GitHub Copilot inclui outros arquivos relevantes como contexto. Isso reduz os erros, oferecendo sugestões mais relevantes e precisas.

    • Agora você pode solicitar uma revisão de código do Copilot do GitHub na janela Alterações do Git:

      Uma captura de tela da janela Alterações do Git com o botão Revisão do Copiloto do GitHub destacado.

      A janela Alterações do Git está aberta com o botão de Revisão do GitHub Copilot destacado.

      O GitHub Copilot procura possíveis problemas e cria comentários para eles:

      Uma captura de tela do Copilot do GitHub explicando um problema.

      O GitHub Copilot encontrou um problema com a linha if ( is_enabled_) new_site.disable(). Ele diz que pode ser um erro, e provavelmente deveria ser assim: se (is_enabled_) então new_site.enable(), porque a intenção parece ser habilitar o novo site se o ponto de interrupção estiver ativo.

      Para usar esse recurso, verifique se o seguinte está ativado:

      • Ferramentas>Opções>Recursos de Visualização>Comentários de Pull Request
      • Ferramentas>Opções>GitHub>Copilot>Integração com o Código-Fonte>Ativar funcionalidades de pré-visualização do Git.
    • O GitHub Copilot Edits é um novo recurso que pode fazer alterações em vários arquivos em seu projeto. Para iniciar uma nova sessão de edições, clique Criar nova sessão de edição na parte superior da janela de bate-papo do Copilot do GitHub:

      Uma captura de tela da janela de bate-papo do Copilot do GitHub. O botão Criar nova sessão de edição está realçado.

      Descreva as alterações que deseja fazer e o Copilot sugere edições relevantes. Você pode visualizar as edições uma a uma e aceitar as que quiser ou fazer correções:

      Uma captura de tela da janela GitHub Copilot Chat exibindo os arquivos editados.

      O GitHub Copilot está exibindo um resumo das alterações feitas, como 1. Crie uma nova subclasse range_breakpoint em include/libsdb/breakpoint.hpp" e 2. Implemente a classe range_breakpoint em src/breakpoint.cpp. É apresentada uma opção para aceitar as alterações.

      Para obter mais informações, consulte Iterar em vários ficheiros de modo mais eficiente com o GitHub Copilot Edits.

  • CMake

    • Agora suporta CMake Presets v9. Novas expansões macro no campo de inclusão de uma predefinição. Para mais informações, consulte a expansão de macros na documentação oficial do CMake.

Novidades do C++ no Visual Studio versão 17.12

Lançado em novembro de 2024

Para mais informações sobre Ver
Novidades para desenvolvedores C++ O que há de novo para desenvolvedores C++ no Visual Studio 2022 17.12
Standard Library (STL) mesclou recursos C++26 e C++23, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Changelog STL 17.12
Novos recursos no IDE do Visual Studio 17.12 Notas de versão do Visual Studio 2022 versão 17.12
Melhorias na conformidade da linguagem C++ no Visual Studio 2022 17.12 Melhorias de conformidade do C++, alterações de comportamento e correções de bugs no Visual Studio 2022 17.12

Um rápido destaque de algumas das novas funcionalidades:

  • Aprimoramentos de biblioteca padrão
    • C++23 Implementação de intervalos de formatação (P2286R8) concluída. Adicionados formatadores para os adaptadores de contentor stack, queuee priority_queue.
    • Adicionados operadores de subscrito multidimensional, que também suportam <mdspan>. Por exemplo: print("m[{}, {}]: '{}'; ", i, j, m[i, j]).
  • Desenvolvimento de jogos em C++
  • Construa insights
    • Você pode executar o Build Insights em arquivos selecionados. Selecione os arquivos desejados no Gerenciador de Soluções, clique com o botão direito do mouse e escolha Executar Build Insights em Arquivos Selecionados: Uma captura de tela de arquivos no Gerenciador de Soluções. O menu de contexto está aberto e a opção Executar Build Insights em Arquivos Selecionados é realçada.
    • Você pode filtrar os resultados do Build Insights por projeto. Clique no botão de filtro no cabeçalho da coluna de filtro e selecione os projetos para os quais deseja ver os resultados: Uma captura de tela da janela Build Insights com a guia Arquivos incluídos aberta. O botão de filtro foi selecionado e uma lista de projetos é exibida. As caixas de seleção ao lado de Dois projetos estão marcadas.
    • Clique no ícone de ponto de interrogação na janela do Build Insights para ver uma breve descrição das abas na janela do Build Insights e um link para a documentação para uma explicação detalhada: Uma captura de ecrã da janela do Build Insights com o botão de ver explicações (um ponto de interrogação num círculo) realçado.
  • Copiloto do GitHub
    • Você pode clicar em Ask Copilot ao lado do valor de uma variável para obter insights orientados por IA sobre o que levou ao seu estado atual. Por exemplo, o seguinte programa tem um erro off-by-one em sua condição de loop:

    Uma captura de tela da janela Autos. A variável chamada é NULL. O ícone Ask Copilot ao lado dele está realçado.

    O código que causou esse problema é: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++).

    Se clicares no ícone do Ask Copilot para a variável it, ele dir-te-á porque é <NULL>.

    Uma captura de tela de uma janela do Copilot do GitHub.

    Este erro está dentro de uma função definida como int calculate_number_of_cats(const house& h). A mensagem do GitHub Copilot diz: "O valor da expressão it é NULL, o que significa que o iterador não está apontando para nenhum elemento válido no vetor animals_." No contexto do seu programa, deve percorrer o vetor animals_ no objeto casa para contar o número de objetos do tipo gato. Por que é nulo. Com base nos locais e no contexto da pilha de chamadas: o objeto da casa h tem um vetor de animals_ vazio (size=0). A condição do ciclo it <= h.animals_.end() está incorreta. Deve ser != h.animals_.end()."

    • Você pode clicar em Perguntar ao Copilot sobre erros na Lista de Erros do Visual Studio para obter ajuda sobre o erro e obter uma sugestão de correção. Por exemplo:

    Uma captura de tela da janela Lista de Erros.

    O ícone do Perguntar ao Copilot é realçado ao lado de um erro onde unique_ptr tenta referenciar uma função eliminada.

    Se você clicar em Perguntar Copilot, ele informará sobre o erro:

    Uma captura de tela da explicação do Copilot do GitHub para o erro.

    A mensagem do Copilot diz: "O erro ocorre porque o loop for baseado em intervalo estava tentando copiar objetos std::unique_ptr, o que não é permitido, pois std::unique_ptr não pode ser copiado. Para corrigir isso, alterei o loop para usar uma referência para evitar copiar os objetos std::unique_ptr. Desta forma, o loop itera sobre referências aos objetos std::unique_ptr, o que é permitido."

  • Depuração
    • Novos visualizadores de depuração para mutex, recursive_mutexe move_iterator.
    • O depurador agora exibe valores de retorno em linha: uma captura de tela de um balão de ajuda mostrando o valor 8.25. É o resultado da expressão após a declaração de retorno que foi ultrapassada.

Novidades do C++ no Visual Studio versão 17.11

Lançado em agosto de 2024

Para mais informações sobre Ver
Novidades para desenvolvedores C++ O que há de novo para desenvolvedores C++ no Visual Studio 2022 17.11
STL (Standard Library) mesclou recursos C++26 e C++23, relatórios de defeitos C++20, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Registo de Alterações STL 17.11
Novos recursos no IDE do Visual Studio 17.11 Notas de versão do Visual Studio 2022 versão 17.11
Melhorias de conformidade da linguagem C++ no Visual Studio 2022 17.11 Melhorias de conformidade do C++, alterações de comportamento e correções de bugs no Visual Studio 2022 17.11

Uma lista parcial de novos recursos:

  • Aprimoramentos de biblioteca padrão

    • A implementação de saída formatada agora inclui std::range_formatter e formatadores para std::pair e std::tuple.
    • Adicionado suporte para std::println() sem argumentos. Isso imprime uma linha em branco, conforme proposto no P3142R0.
    • Vetorização melhorada para vários algoritmos, incluindo replace_copy(), replace_copy_if(), ranges::replace_copy, ranges::replace_copy_if, find_first_of() e ranges::find_first_of, para elementos de 8 bits e 16 bits, mismatch(), ranges::mismatch, count(), ranges::count, find(), ranges::find, ranges::find_last e ranges::iota.
  • Desenvolvimento de jogos em C++

    • Agora você pode adicionar modelos, módulos e plug-ins comuns da classe Unreal Engine de dentro do Visual Studio. Para obter mais informações, consulte Adicionar classes, módulos e plug-ins do Unreal Engine no Visual Studio.
    • A nova barra de ferramentas Unreal Engine fornece acesso rápido a ações relacionadas ao Unreal Engine a partir do Visual Studio. A barra de ferramentas permite que você anexe rapidamente aos processos do Unreal Engine, verifique novamente o cache do Blueprints, acesse rapidamente o Unreal Engine Log e forneça acesso rápido à Página de Configuração do Unreal Engine para Visual Studio. Para obter mais informações, consulte Unreal Engine Toolbar.
    • Agora você pode filtrar os resultados do rastreamento por projeto. Além disso, os resultados em cada linha mostram o caminho relativo e o nome do arquivo em vez do caminho completo. O agrupamento de resultados na visualização Arquivos incluídos também foi aprimorado:

    Uma captura de ecrã dos resultados melhorados do diagnóstico de Ficheiros Incluídos.

    A visualização Arquivos incluídos tem uma nova coluna para o projeto. A coluna Project é selecionada e projetos como (Select All), CompilerIdC, OpenAL, common, e assim por diante, são selecionados. Os arquivos incluídos são listados por caminho relativo e nome de arquivo e agrupados.

  • Depuração do CMake

    • Agora você pode depurar seus scripts CMake e arquivos CMakeLists.txt no depurador do Visual Studio para projetos CMake destinados ao Linux via Windows Subsystem for Linux (WSL) ou SSH. Para iniciar uma sessão de depuração do CMake no Visual Studio, coloque um ponto de paragem no arquivo CMakeLists.txt e navegue até Project>Configurar Cache com Depuração do CMake.
  • Copiloto do GitHub

    • Ao passar o mouse sobre os símbolos no editor de códigos, clique no botão Copilot Diga-me mais na caixa de diálogo Informações rápidas para saber mais sobre um determinado símbolo:

    Uma captura de tela da janela Informações rápidas.

    A janela Informações rápidas é mostrada acima de uma função. O link Diga-me mais está em destaque.

    • O GitHub Copilot pode gerar sugestões de nomenclatura para seus identificadores (variáveis, métodos ou classes) com base em como seu identificador é usado e no estilo do seu código.

      Uma captura de ecrã da caixa de diálogo do GitHub Copilot Rename.

      A caixa de diálogo Renomear tem um campo Novo nome com uma lista suspensa que mostra estas opções: text_color, font_color, display_color, console_color e menu_text_color.

    Você precisa de uma assinatura ativa do GitHub Copilot. Clique com o botão direito do mouse na variável que deseja renomear e escolha Renomear (Ctrl+R, Ctrl+R). Selecione o ícone de brilho do GitHub Copilot para gerar sugestões de nomenclatura.

  • Depuração

    • Os pontos de interrupção condicionais em C++ são mais rápidos.
  • Melhorias no diagnóstico

    • Diagnóstico aprimorado ao chamar std::get<T> num std::tuple que tem várias instâncias de T nos seus argumentos de template. MSVC costumava relatar:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Agora relata:
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • Diagnósticos melhorados quando std::ranges::to não consegue construir o resultado solicitado. MSVC costumava relatar:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Agora relata:
      error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'

Novidades do C++ no Visual Studio versão 17.10

Lançado em maio de 2024

Para mais informações sobre Ver
Novidades para desenvolvedores C++ Novidades para desenvolvedores C++ no Visual Studio 2022 17.10
STL (Standard Library) mesclou recursos C++26 e C++23, relatórios de defeitos C++20, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Changelog STL 17,10
Novos recursos no IDE do Visual Studio 17.10 Notas de versão do Visual Studio 2022 versão 17.10
Melhorias na conformidade da linguagem C++ no Visual Studio 2022 17.10 Melhorias de conformidade do C++, alterações de comportamento e correções de bugs no Visual Studio 2022 17.10

Uma lista parcial de novos recursos:

  • Atualização do conjunto de ferramentas MSVC: A versão do conjunto de ferramentas MSVC é atualizada de 19.39 para 19.40. Isso pode afetar projetos que têm pressupostos de versão. Para obter mais informações sobre algumas maneiras pelas quais isso afeta projetos que pressupõem que as versões do MSVC são todas 19.3X para versões do Visual Studio 2022, consulte MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10.
  • Aprimoramentos na Biblioteca Padrão: A biblioteca padrão adicionou suporte para P2510R3 Formatação de Ponteiros, o que alinha melhor o conjunto de especificadores de formato para ponteiros com aqueles que já existem para inteiros ao usar std::format. Melhorou as implementações vetorizadas de std::min_element, std::ranges::min e amigos.
  • Build Insights: agora fornece informações de instanciação de modelo. Consulte a vista de Modelos para obter informações de compilação no Visual Studio ou a gravação da vista Pure Virtual C++ - Modelos para obter insights de compilação no Visual Studio.
  • Unreal Engine Plugin: Há um novo recurso de opt-in para que o Unreal Engine Plugin seja executado em segundo plano, reduzindo os custos de inicialização. Este é um recurso opcional que é ativado por meio do Tools>Options>Unreal Engine.
  • Novos recursos para Linux: Consulte Novos recursos de desenvolvimento do Linux no Visual Studio.
  • CMake Targets: Agora você pode fixar alvos no CMake Targets View.
  • Connection Manager UX: A experiência do usuário oferece uma experiência mais perfeita ao se conectar a sistemas remotos. Para obter mais informações, consulte Melhorias de usabilidade no Visual Studio Connection Manager.
  • Comentários de pull request: agora podes ver comentários do GitHub e do Azure DevOps diretamente no teu ficheiro de trabalho. Ative a bandeira de funcionalidade, Comentários de Pedido de Pull, em Opções>Ambiente>Funcionalidades de Pré-visualização e extraia a ramificação do pedido de pull para começar.
  • AI-Generatedde conteúdo: o GitHub Copilot agora pode elaborar descrições de pull request. Requer uma assinatura ativa do GitHub Copilot. Experimente clicar no ícone Adicionar Descrição de Pull Request Gerada por IA sparkle pen dentro da janela Criar um Pull Request.
  • Pré-visualização de imagem: passe o cursor sobre um caminho de imagem para ver uma pré-visualização com detalhes de dimensões. O tamanho é limitado a 500 px de largura e altura.

    Captura de tela da pré-visualização ao passar o cursor.

    O mouse está pairando sobre a linha std::filesystem::path vs_logo_path = "../images/vs_logo.png". Abaixo aparece uma visualização do logotipo do Visual Studio e as informações de que ele tem 251 x 500 pixels e 13,65 KB de tamanho.

  • Criação de Ponto de Interrupção/Ponto de Rastreamento: Agora é possível criar pontos de interrupção condicionais ou pontos de rastreamento diretamente a partir de expressões no código-fonte através do menu de clique direito. Isso funciona com nomes e valores de propriedades ou campos de variáveis automáticas, locais, janelas de observação ou DataTips.
  • Caixa de Diálogo Anexar ao Processo: A funcionalidade fornecida pela Caixa de Diálogo Anexar ao Processo é mais amigável para o utilizador. Agora você pode alternar facilmente entre exibições de árvore e lista, organizar melhor os processos com seções recolhíveis e selecionar tipos de código com uma caixa de combinação simplificada. Além disso, o recurso "Selecionar/Rastrear Janela" agora é mais fácil de usar, permitindo o rastreamento bidirecional: selecionar um processo destaca sua janela e clicar em uma janela seleciona seu processo.
  • Integração do Copiloto do GitHub: as extensões do Copilot e do Copilot Chat do GitHub estão agora unificadas e são fornecidas diretamente no Visual Studio. Para o instalar, instale o componente GitHub Copilot no Visual Studio Installer:

    Captura de tela da opção de instalação do Visual Studio Installer GitHub Copilot.

    A interface do GitHub Copilot está no canto superior direito do Visual Studio. Para usá-lo, você precisa de uma assinatura ativa do GitHub Copilot.

    Captura de tela do botão Copilot do GitHub.

    O botão GitHub Copilot é mostrado no canto superior direito do Visual Studio. Ele tem opções para abrir uma janela de bate-papo, configurações do Copilot do GitHub, saber mais e gerenciar a assinatura do copiloto.

O que há de novo no C++ no Visual Studio versão 17.9

Lançado fev 2024

Para mais informações sobre Ver
Novidades para desenvolvedores C++ Novidades para desenvolvedores C++ no Visual Studio 2022 17.9
A biblioteca padrão (STL) mesclou recursos do C++23, melhorias de desempenho, comportamento aprimorado, resoluções de problemas do Language Working Group (LWG) e bugs corrigidos STL Changelog 17,9
Novos recursos no IDE do Visual Studio 17.9 Notas de versão do Visual Studio 2022 versão 17.9
Melhorias na conformidade da linguagem C++ no Visual Studio 2022 17.9 melhorias de conformidade C++, alterações de comportamento e correções de erros no Visual Studio 2022
Resumo das atualizações de back-end C++ atualizações de back-end MSVC desde o Visual Studio 2022 versão 17.3

Uma lista parcial de novos recursos:

  • #include diagnóstico, que fornece uma análise detalhada de suas diretivas #include. Ative este recurso clicando com o botão direito do mouse em um #include e escolhendo #include diretivas>Ativar o diagnóstico de diretivas #include em. Acima de cada #include está o número de vezes que seu código faz referência a esse #include arquivo. Clique no link de referência para navegar até onde o seu código usa algo deste arquivo de cabeçalho. Para visualizar o tempo de compilação das suas diretivas de #include, execute o Build Insights navegando até Build>Run Build Insights on Solution>Build.

    Captura de ecrã do diagnóstico #include.

    Acima do #include, há um link de **referência**, e muitas referências a este arquivo #include (neste caso, 1). O tempo de compilação também é listado (neste caso, menos de 1/2 por segundo).

  • Visualização de layout de memória, que mostra como a memória é organizada para suas classes, estruturas e uniões. Passe o cursor sobre um tipo e escolha o link Layout de Memória na Informações Rápidas para abrir uma janela dedicada exibindo o layout de memória do tipo selecionado. Passar o mouse sobre tipos de dados individuais nesta janela fornece informações detalhadas sobre seu tamanho e deslocamento dentro do tipo.

    Captura de tela da janela de layout de memória

    A janela de layout de memória mostra o conteúdo da classe Snake. Ele mostra os deslocamentos de memória dos vários campos da classe, como classes de pontos para a localização da cabeça e do corpo, a pontuação e assim por diante.

  • Agora você pode especificar seu próprio executável CMake personalizado. Esse recurso é útil se você quiser usar uma versão específica do CMake que não é fornecida com o Visual Studio. Navegue até Ferramentas>Opções e selecione CMake>Geral. Selecione Ativar executável CMake personalizado e especifique o caminho do diretório para o seu executável CMake.

    Captura de tela da caixa de diálogo de opções do CMake

    Na caixa de diálogo de opções do CMake, a opção "Ativar executável CMake personalizado" e o campo "Diretório executável do CMake" estão realçados.

  • IntelliSense melhorado para projetos Unreal Engine.
  • Suporte melhorado a C++23: std::format e std::spanformattable, range_format, format_kind e set_debug_format() como parte de P2286R8 Intervalos de Formatação<mdspan> de acordo com P0009R18 e alterações de redação posteriores aplicadas ao Padrão C++23. Além disso, format() pode formatar ponteiros por P2510R3.

O que há de novo para C++ no Visual Studio versão 17.8

Lançado em nov de 2023

Para mais informações sobre Ver
Novidades para desenvolvedores C++ Novidades para desenvolvedores C++ no Visual Studio 2022 17.8
Biblioteca padrão (STL) mesclou C++26, recursos C++23, extensões C++20, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Changelog STL 17,8
Novos recursos no IDE do Visual Studio 17.8 Notas de versão do Visual Studio 2022 versão 17.8
Melhorias na conformidade da linguagem C++ no Visual Studio 2022 17.8 melhorias de conformidade C++, alterações de comportamento e correções de erros no Visual Studio 2022
Uma visão geral das melhorias do C++ no Visual Studio, VS Code e vcpkg durante 2023 Um ano de melhorias em C++

Uma lista parcial de novos recursos:

  • Diagnóstico estruturado em C++ na janela de Saída e uma nova janela que fornece mais detalhes sobre o problema e informações sobre o erro. Para obter mais informações, consulte Saída SARIF Estruturada e Janela de Detalhes do Problema.
  • Um recurso que permite visualizar o tamanho e o alinhamento de suas classes, structs, uniões, tipos base ou enums antes mesmo do código ser compilado. Passe o cursor sobre o identificador e uma Informação Rápida exibe as informações de tamanho e alinhamento.
  • Um recurso que sugere quando marcar funções de membro const porque elas não modificam o estado do objeto. Passe o cursor sobre uma função de membro e clique no ícone da lâmpada para marcar a função como const.
  • O Visual Studio agora solicita que você marque funções globais como estáticas por meio de um ícone de chave de fenda que aparece pelo nome da função. Clique no ícone da chave de fenda para marcar a função como estática.
  • As diretivas #include não usadas aparecem esmaecidas no editor. Você pode posicionar o cursor sobre uma inclusão atenuada e usar o menu da lâmpada para remover essa inclusão ou todas as inclusões não utilizadas. Você também pode adicionar diretivas #include para entidades que são incluídas indiretamente por meio de outros cabeçalhos. Para obter mais informações, consulte Limpar inclusões de C/C++ no Visual Studio.
  • Mais suporte ao Unreal Engine:
  • O suporte a testes de unidade Linux remotos agora permite que você execute seus testes CTest e GTest em suas máquinas Linux remotas a partir do Gerenciador de Testes do Visual Studio, assim como seus testes locais.

O que há de novo no C++ no Visual Studio versão 17.7

Lançado em ago de 2023

Para mais informações sobre Ver
Novidades para desenvolvedores C++ Novidades para desenvolvedores C++ no Visual Studio 2022 17.7
Novos recursos C++ específicos para o desenvolvimento de jogos Desbloqueando o poder do Visual Studio 2022 para desenvolvimento de jogos em C++
A biblioteca padrão (STL) mesclou recursos do C++23, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos STL Changelog 17,7
Novos recursos no IDE do Visual Studio 17.7 Visual Studio 2022 versão 17.7 Notas de versão
Melhorias na conformidade da linguagem C++ no Visual Studio 2022 17.7 melhorias de conformidade C++, alterações de comportamento e correções de erros no Visual Studio 2022

Uma lista parcial de novos recursos:

  • Sessões de depuração mais rápidas e tempos de carregamento de projetos mais rápidos
  • Visualização passo a passo da expansão de macros
  • Download com um clique para o Subsistema Windows para Linux (WSL)
  • Suporte melhorado para comentários Doxygen
  • C++ Build Insights para desenvolvimento de jogos
  • Adicionado /std:clatest para o compilador C.
  • Melhorias no projeto Unreal Engine, tais como um IntelliSense mais rápido, uma melhor colorização de sintaxe, a capacidade de encontrar todas as referências do Blueprint do Unreal Engine, entre outros.

O que há de novo no C++ no Visual Studio versão 17.6

Lançado em maio de 2023

Para mais informações sobre Ver
Novidades para desenvolvedores C++ O que há de novo para desenvolvedores C++ no Visual Studio 2022 17.6
A biblioteca padrão (STL) mesclou recursos do C++23, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Changelog STL 17,6
Novos recursos no IDE do Visual Studio 17.6 Notas de Lançamento do Visual Studio 2022 versão 17.6
Melhorias na conformidade da linguagem C++ no Visual Studio 2022 17.6 melhorias de conformidade C++, alterações de comportamento e correções de erros no Visual Studio 2022

Uma lista parcial de novos recursos inclui:

  • Depuração de script CMake
  • Suporte integrado para High Level Shading Language (HLSL)
  • Visualizador de Log do Unreal Engine
  • VCPKG agora é adicionado por padrão
  • Suporte inicial ao C++20 em projetos C++/CLI e à biblioteca padrão C++23, incluindo alguns recursos para manipulação de intervals.

Novidades do C++ no Visual Studio versão 17.5

Lançado a fev de 2023

Para mais informações sobre Ver
Novidades para desenvolvedores C++ O que há de novo para desenvolvedores C++ no Visual Studio 2022 17.5
A biblioteca padrão (STL) mesclou recursos do C++23, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Changelog STL 17,5
Novos recursos no IDE do Visual Studio 17.5 Notas de lançamento da versão 17.5 do Visual Studio 2022

Uma lista parcial de novos recursos inclui:

  • std::move, std::forward, std::move_if_noexcepte std::forward_like agora não produzem chamadas de função no código gerado, mesmo no modo de depuração. Essa alteração evita que as versões nomeadas causem sobrecarga desnecessária nas compilações de depuração. /permissive- (ou uma opção que o implique, como /std:c++20 ou std:c++latest) é necessária.

  • Adicionado [[msvc::intrinsic]]. Você pode aplicar esse atributo a funções não recursivas que consistem em uma única conversão, que usa apenas um parâmetro.

  • Adicionado suporte para a consola do Linux no Terminal Integrado, que permite entrada/saída de terminal.

  • Adicionado suporte experimental inicial para primitivos atômicos C11 (<stdatomic.h>). Você pode habilitar esse recurso experimental com a opção /experimental:c11atomics no modo /std:c11 ou posterior.

  • Adicionado um novo conjunto de verificações experimentais de alta confiança ao Lifetime Checker para reduzir o ruído.

  • Um novo recurso de visualização, o Explorador de Arquivos Remoto, permite visualizar o diretório de arquivos em suas máquinas remotas no VS, e carregar e baixar arquivos para ele.

  • Versionamento alterado dos executáveis CMake fornecidos com o Visual Studio para corresponder às versões do Kitware.

  • Adicionado suporte para Hot Reload ao modelo de projeto CMake.

  • Go To Definition for C++ agora usa um indicador mais sutil da operação levando mais tempo, substituindo a caixa de diálogo modal das versões anteriores.

  • Começou a implementação de um experimento fornecendo resultados mais inteligentes no preenchimento automático do C++ e na lista de membros. Essa funcionalidade era anteriormente conhecida como Predictive IntelliSense, mas agora usa um novo método de apresentação.

  • Agora enviamos um conjunto de ferramentas Arm64 Clang nativo com nossa carga de trabalho LLVM, permitindo a compilação nativa em máquinas Arm64.

  • Localização adicionada à extensão Image Watch (esta extensão está disponível no Marketplace e não é empacotada através do Instalador do Visual Studio).

  • Adicionado suporte para abrir uma janela do Terminal no Developer Container em execução no momento.

  • Fiz várias melhorias na expansão macro do IntelliSense. De forma notável, habilitámos a expansão recursiva em mais contextos e adicionámos opções ao pop-up para copiar a expansão para a área de transferência ou expandir a macro diretamente.

  • O monitoramento simultâneo agora é suportado no Monitor serial. O monitoramento simultâneo permite monitorar várias portas ao mesmo tempo, lado a lado. Pressione o botão de adição para abrir outro Monitor Serial e começar.

  • Agora você pode exibir propriedades de classes base modificadas em um ativo Unreal Blueprint sem sair do Visual Studio. Clique duas vezes em uma referência de Blueprint para uma classe ou propriedade C++ para abrir o UE Asset Inspetor no Visual Studio.

  • Ativado executando DevContainers em uma máquina Linux remota.

  • Habilitada a seleção de vários destinos para criar na visualização Alvos do CMake.

  • Adicionado suporte para CMakePresets.json versão 5. Consulte a documentação do CMake para obter informações sobre novos recursos.

  • Ativado o Test Explorer para criar e testar vários destinos CMake em paralelo.

  • Adicionada a opção "Abrir contêiner no terminal" para Dev Containers.

  • Recursos de biblioteca padrão implementados:

    • P2508R1basic_format_string, format_string, wformat_string
    • P2322R6ranges::fold_left, ranges::fold_righte assim por diante.
    • P2321R2views::zip (não inclui zip_transform, adjacente adjacent_transform)

Novidades do C++ no Visual Studio versão 17.4

Lançado em nov de 2022

Para mais informações sobre Ver
Novidades para desenvolvedores C++ Novidades para desenvolvedores C++ no Visual Studio 2022 17.4
A biblioteca padrão (STL) mesclou recursos do C++23, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos STL Changelog 17,4
Novos recursos no IDE do Visual Studio 17.4 Notas da versão 17.4 do Visual Studio 2022
Melhorias na conformidade da linguagem C++ no Visual Studio 2022 17.4 melhorias de conformidade C++, alterações de comportamento e correções de erros no Visual Studio 2022

Uma lista parcial de novos recursos na versão 17.4:

  • Mensagens de erro do compilador melhoradas para fornecer informações mais corretas e úteis, especialmente para conceitos.

  • Adicionada opção experimental do MSVC /experimental:log<directory> para gerar diagnóstico SARIF estruturado para o diretório especificado.

  • Adicionado suporte para atributos C23 ao IntelliSense e progresso contínuo no suporte a módulos C++20.

  • Melhor desempenho de indexação ao abrir uma nova solução. Os grandes projetos poderão registar uma melhoria de 20 a 35% em relação aos 17,3.

  • Melhoria da Otimização do Valor de Retorno Nomeado (NRVO):

    • O NRVO é habilitado para casos que envolvem tratamento de exceções ou loops.
    • O NRVO é ativado mesmo sob /Od se o usuário passar a opção /Zc:nrvo, ou /std:c++20 ou posterior, ou /permissive-.
    • Agora você pode desativar o NRVO com a opção /Zc:nrvo-.
  • Atualizada a versão do LLVM fornecida com o Visual Studio para 15.0.1. Para obter mais informações sobre o que está disponível, consulte as notas de versão do LLVM e Clang.

  • Adicionou-se suporte no Visual Studio para artefactos vcpkg em projetos CMake. Para projetos que incluem um manifesto vcpkg, o ambiente é ativado automaticamente quando o projeto é aberto. Saiba mais sobre esse recurso na ativação do ambiente vcpkg na postagem do blog do Visual Studio.

  • Agora você pode usar Dev Containers para seus projetos C++. Saiba mais sobre esse recurso em nossa postagem de blog do Dev Containers for C++.

  • O IntelliSense agora respeita a ordem dos cabeçalhos pré-incluídos quando um deles é um PCH. Anteriormente, quando uma PCH era usada via /Yu e forçada a ser incluída via /FI, o IntelliSense processava-a sempre primeiro, antes de quaisquer outros cabeçalhos incluídos via /FI. Este comportamento não corresponde ao comportamento de build. Com esta alteração, os cabeçalhos /FI são processados na ordem em que são especificados.

  • Removidos os prefixos internos dos nomes CTest no Test Explorer.

  • Atualizada a versão do CMake fornecida com o Visual Studio para a versão 3.24.1. Para detalhes do que está disponível, consulte as notas de versão do CMake .

  • Atualização do SDK do Android:

    • Os scripts Ant foram removidos, para que os usuários não vejam mais modelos baseados em Ant na caixa de diálogo Novo Projeto. Para obter ajuda na migração de modelos Ant para modelos Gradle, consulte Migrando compilações do Apache Ant
    • Adicionado suporte para compilação com o NDK 23 e 24
    • Componente NDK atualizado para o LTS versão 23
  • Adicionadas implementações vetorizadas de ranges::min_element(), ranges::max_element()e ranges::minmax_element()

  • Continuamos a acompanhar os desenvolvimentos mais recentes na padronização C++. O suporte para esses recursos do C++23 está disponível incluindo /std:c++latest nas opções do compilador:

    • P2302R4ranges::contains, ranges::contains_subrange

    • P2499R0string_view Construtor Range deve ser explicit

    • P0849R8auto(x): cópia de decaimento na língua

      (A parte do compilador ainda não está implementada. A parte da biblioteca foi implementada no modo C++20 quando o suporte a intervalos foi inicialmente implementado.)

    • P0881R7<stacktrace>

    • P2301R1 Adicionar um pmr Alias para std::stacktrace

    • P1328R1constexpr type_info::operator==()

    • P2440R1ranges::iota, ranges::shift_left, ranges::shift_right

    • P2441R2views::join_with

  • Adicionada uma opção "Navegação após Criar Declaração/Definição" para permitir que você escolha o comportamento de navegação do recurso Criar Declaração/Definição. Você pode selecionar entre espreitar (o padrão) ou abrir o documento, ou nenhuma navegação.

  • As compilações Arm64 do Visual Studio agora incorporam versões Arm64 do CMake e do Ninja.

  • Adicionado suporte para CMake Presets versão 4. Para detalhes do que está disponível, consulte as notas de versão do CMake .

  • As conexões remotas do sistema usando o Connection Manager agora suportam SSH ProxyJump. ProxyJump é usado para acessar um host SSH através de outro host SSH (por exemplo, para acessar um host atrás de um firewall).

Novidades do C++ no Visual Studio versão 17.3

Lançado em ago de 2022

Para mais informações sobre Ver
Novidades para desenvolvedores C++ melhorias no C++ na versão 17.3
A biblioteca padrão (STL) mesclou recursos do C++23, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Changelog STL 17,3
Novos recursos no IDE do Visual Studio 17.3 Notas de versão do Visual Studio 2022 versão 17.3
Melhorias na conformidade da linguagem C++ no Visual Studio 2022 17.3 melhorias de conformidade C++, alterações de comportamento e correções de erros no Visual Studio 2022

Uma lista parcial de novos recursos na versão 17.3:

  • A cadeia de ferramentas Arm64EC não está mais marcada como experimental e está pronta para uso em produção.
  • O Terminal do Visual Studio agora pode ser usado como um cliente SSH com suas conexões SSH armazenadas. Com o C++ for Linux Tools instalado, abra a janela da ferramenta Terminal. O menu desdobrável Terminal é preenchido com as suas ligações armazenadas. Quando você seleciona uma conexão, uma nova janela Terminal é aberta dentro do Visual Studio que mostra um pseudoterminal em seu sistema remoto. Caracteres de controle, cores e reconhecimento de posição do cursor são suportados.
  • O Visual Studio agora pode adicionar modelos de classe Unreal Engine para seus projetos UE. Para experimentar este recurso, certifique-se de que o suporte IDE para o Unreal Engine esteja selecionado na carga de trabalho de desenvolvimento de jogos com C++, no Visual Studio Installer. Quando estiver a trabalhar num projeto UE, clique com o botão direito do rato no projeto ou numa pasta/filtro e selecione Adicionar classe UE>.
  • Vá para Definição agora se lembra da assinatura anterior e navega de acordo quando uma correspondência melhor não está disponível (por exemplo, depois de alterar manualmente a assinatura de um dos pares). A capacidade de resposta do Go To All é melhorada. Anteriormente, os resultados apareciam depois que você parou de digitar. Na nova experiência, os resultados são apresentados logo à medida que escreve.
  • Em contextos que exigem conclusão de tipo enum (por exemplo, atribuições para variáveis enum, rótulos de caso, retorno de tipo enum e assim por diante), a lista de preenchimento automático agora é filtrada apenas para incluir os enumeradores correspondentes e construções relacionadas.
  • Adicionado suporte a NuGet PackageReference para projetos MSBuild C++/CLI destinados ao .NET Core. Essa alteração foi feita para desbloquear bases de código mistas de serem capazes de adotar o .NET Core. Esse suporte não funciona para outros tipos de projeto C++ ou qualquer tipo de projeto C++ destinado ao .NET Framework. Não há planos para estender o suporte a PackageReference para outros cenários C++. A equipe está trabalhando em experiências separadas envolvendo vcpkg para cenários não-MSBuild e para adicionar maior funcionalidade.
  • Adicionou-se uma janela de Monitor Serial para desenvolvimento embebido, disponível através de Debug>Windows>Serial Monitor.
  • Indexação em C++ melhorada em aproximadamente 66% em comparação com a versão 17.2.
  • Atualizada a versão do CMake fornecida com o Visual Studio para a versão 3.23. Consulte as notas de versão do CMake 3.23 para obter detalhes sobre o que está disponível.
  • Atualizadas as versões das ferramentas LLVM fornecidas com o Visual Studio para v14. Para obter detalhes sobre o que está disponível, consulte as notas de versão do LLVM e Clang.
  • Foi atualizado o conjunto de ferramentas Dev 16.11 C++ para instalação paralela para a versão 14.29.30145.00. A versão mais recente do Dev 16.11 C++ Toolset contém correções de bugs importantes, incluindo a correção de todos os relatórios de defeitos C++20 restantes. Para obter mais informações sobre as correções de bugs, incluindo os relatórios de defeitos do C++20 na versão Dev 16.11, consulte Notas de versão do Visual Studio 2019 versão 16.11.14.
  • Fiz várias melhorias na experiência dentro do editor de módulos C++. Estamos trabalhando continuamente para melhorar a qualidade da experiência, mas incentivamos você a experimentá-los na versão 17.3. Denuncie os problemas restantes através da Comunidade de Programadores.

O que há de novo no C++ no Visual Studio versão 17.2

Lançado em maio de 2022

Para mais informações sobre Ver
Novidades para desenvolvedores C++ Visual Studio 2022 17.2 já está disponível
Standard Library (STL) mesclou relatórios de defeitos do C++20, recursos do C++23, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos STL Changelog 17,2
Novos recursos no IDE do Visual Studio 17.2 Notas de Versão do Visual Studio 2022 versão 17.2
Melhorias de conformidade da linguagem C++ no Visual Studio 2022 17.2 melhorias de conformidade C++, alterações de comportamento e correções de erros no Visual Studio 2022

Uma lista parcial de novos recursos na versão 17.2:

  • Adicionado suporte de compilador para o recurso C++23 de dedução this, disponível na opção /std:c++latest.
  • Adicionado suporte IntelliSense para recursos C++23 deduzindo this e if consteval.
  • Adicionado suporte para nome e dica de tipo de parâmetro em linha, acionado pressionando Alt+F1 ou pressionando duas vezes Ctrl. Esse comportamento pode ser personalizado em Ferramentas > Opções > Editores de texto > C/C++ > IntelliSense.
  • Adicionado suporte experimental para módulos C++20 em projetos CMake. Atualmente, esse suporte só está disponível com o gerador do Visual Studio (MSBuild).
  • Na versão 17.1, introduzimos o registro periférico e as visualizações RTOS para desenvolvedores incorporados. Continuamos a melhorar os recursos dessas visualizações com melhorias de usabilidade na versão 17.2:
    • A janela da ferramenta RTOS agora está oculta por padrão. Ele impede que você mostre uma janela de ferramenta com mensagens de erro que não são relevantes quando você não está usando um RTOS.
    • Quando você clica duas vezes em um objeto RTOS na janela da ferramenta, ele adiciona um relógio para o objeto.
    • Quando você seleciona os valores de início e fim para o ponteiro de pilha na janela da ferramenta RTOS, ele é aberto na janela de memória.
    • Adicionado reconhecimento de thread para destinos de dispositivo à janela da pilha de chamadas.
    • Os usuários agora podem selecionar um ícone de pino ao lado de periféricos, registradores ou campos para fixá-los na parte superior da Visualização periférica.
  • Adicionadas implementações dos relatórios de defeitos C++20 restantes (também conhecidos como backports e). Todos os recursos do C++20 agora estão disponíveis na opção /std:c++20. Para obter mais informações sobre os backports implementados, consulte o Changelog do VS 2022 no repositório GitHub da Microsoft/STL e a postagem do blog do MSVC no STL Completes.
  • Adicionamos vários recursos da Biblioteca C++23, disponíveis na opção /std:c++latest. Para obter mais informações sobre as novas funcionalidades, consulte o registo de alterações do repositório STL .
  • Melhor desempenho da indexação inicial em C++ em até 20%, dependendo da profundidade do gráfico de inclusão.

Novidades do C++ no Visual Studio versão 17.1

Lançado a fev de 2022

Para mais informações sobre Ver
Novidades para desenvolvedores C++ Visual Studio 2022 17.1 já está disponível!
A biblioteca padrão (STL) mesclou recursos do C++23, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Changelog STL 17.1
Novos recursos no IDE do Visual Studio 17.1 Notas de versão do Visual Studio 2022 versão 17.1
Melhorias na conformidade da linguagem C++ no Visual Studio 2022 17.1 melhorias de conformidade C++, alterações de comportamento e correções de erros no Visual Studio 2022

Uma lista parcial de novos recursos na versão 17.1:

  • Um novo modelo de predefinição Configurar é adicionado para configurar e construir projetos CMake num sistema macOS remoto com CMakePresets.json. Você também pode iniciar destinos CMake em um sistema macOS remoto e, em seguida, depurar remotamente no depurador do Visual Studio apoiado por GDB ou LLDB.
  • Agora podes fazer debugging de dump de núcleo num sistema macOS remoto no Visual Studio com LLDB ou GDB.
  • As versões do Clang e LLVM fornecidas com o Visual Studio são atualizadas para v13.
  • A integração CMake do Visual Studio só fica ativa quando um CMakeLists.txt é identificado na raiz do espaço de trabalho aberto. Se um CMakeLists.txt for identificado em outro nível do espaço de trabalho, você será solicitado a ativar a integração do CMake do Visual Studio com uma notificação.
  • Novas vistas que lhe permitem inspecionar e interagir com registos periféricos em microcontroladores e objetos de sistemas operativos em tempo real (RTOS), disponíveis através Debug>Windows>Embedded Registers
  • Adicionada uma nova visualização de thread para projetos RTOS, disponível através de Debug>Windows>RTOS Objects. Para obter mais informações, consulte Embedded Software Development in Visual Studio.

Novidades do C++ no Visual Studio versão 17.0

Lançado nov 2021

Para mais informações sobre Ver
Novos recursos no IDE do Visual Studio 17.0 Visual Studio 2022 versão 17.0 Notas de versão
STL (Standard Library) mesclou recursos C++23 e C++26, relatórios de defeitos C++20, resoluções de problemas do Language Working Group (LWG), melhorias de desempenho, comportamento aprimorado e bugs corrigidos Registro de Alterações STL 17.0
Melhorias na conformidade da linguagem C++ no Visual Studio 2022 17.0 Melhorias de conformidade do C++, alterações de comportamento e correções de bugs no Visual Studio 2022 17.10

Uma visão geral de alguns dos novos recursos do Visual Studio 2022 versão 17.0:

  • O IDE do Visual Studio, devenv.exe, agora é um aplicativo nativo de 64 bits.
  • O conjunto de ferramentas MSVC agora usa como padrão o hash de origem SHA-256 em registros de depuração. Anteriormente, o conjunto de ferramentas usava MD5 para hash de origem por padrão.
  • As ferramentas de compilação v143 agora estão disponíveis por meio do instalador do Visual Studio e nas ferramentas de compilação independentes.

Hot Reload para C++ nativo

  • Hot Reload para C++ torna possível editar muitos tipos de código na sua aplicação em execução e aplicá-los sem precisar pausar a execução da aplicação com algo como um ponto de paragem.

No Visual Studio 2022, ao iniciar seu aplicativo no depurador, você pode usar o botão Hot Reload para modificar seu aplicativo enquanto ele ainda está em execução. Esta experiência é suportada por Editar e Continuar integrado. Para obter mais informações sobre edições suportadas, consulte Editar e continuar (C++).

  • O Hot Reload suporta projetos CMake e Open Folder.

Suporte para WSL2

  • Agora você pode criar e depurar nativamente no WSL2 sem estabelecer uma conexão SSH. Ambos os projetos CMake multiplataforma e projetos Linux baseados em MSBuild são suportados.

Suporte melhorado ao CMake

  • Atualizada a versão do CMake fornecida com o Visual Studio para a versão 3.21. Para obter mais informações sobre o que está disponível nesta versão, consulte as notas de versão do CMake 3.21 .

  • As páginas de visão geral do CMake são atualizadas para oferecer suporte a CMakePresets.json.

  • Agora você pode configurar e construir seus projetos CMake com CMake 3.21 e CMakePresets.json v3.

  • Visual Studio agora oferece suporte à opção buildPresets.targets no CMakePresets.json. Esta opção permite que você construa um subconjunto de destinos em seu projeto CMake.

  • O menu Projeto em projetos CMake é simplificado e expõe opções para "Excluir cache e reconfigurar" e "Exibir cache".

  • Implementada a opção de compilador /scanDependencies para listar dependências do módulo C++20 para projetos CMake, conforme descrito em P1689R5. É um passo em direção ao suporte para a construção de projetos baseados em módulos com o CMake e estamos trabalhando para completar esse suporte em versões posteriores.

Melhorias na biblioteca padrão

As melhorias da Biblioteca Padrão (STL) selecionadas estão destacadas aqui. Para obter uma lista abrangente de novas funcionalidades, alterações, correções de bugs e melhorias de desempenho, consulte o Changelog da equipe STL.

  • Visualizadores de depuração adicionados para melhorar a forma como os seguintes tipos são exibidos: source_location, bind_front(), u8string (e seus iteradores), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (e seu iterador/sentinela), ranges::ref_view, thread, thread::id, jthreade filesystem::path
  • Adicionado [[nodiscard]] à família stoi() de funções em <string> e a várias funções em <locale>, como as funções de membro collate, has_facet(), e as famílias isalnum() e tolower().
  • P0980R1 Desenvolvido std::stringconstexpr no Visual Studio 2019 16.10. O suporte para Clang agora está disponível.
  • P1004R2 Feito std::vectorconstexpr em VS 2019 16.10. O suporte para Clang agora está disponível.

Recursos destacados do C++23

  • P1048R1 Adicionado is_scoped_enum, uma nova característica para a biblioteca C++ Standard, que deteta se um tipo é uma enumeração com escopo.
  • P1132R7out_ptr(), inout_ptr()
  • P1679R3contains() Para basic_string e basic_string_view
  • P1682R3to_underlying() para enumerações
  • P2162R2 Permitir herdar de std::variant
  • P2166R1 Proibir a construção de basic_string e basic_string_view de nullptr. Esta alteração é uma alteração que quebra a compatibilidade com a fonte. O código que anteriormente tinha comportamento indefinido em tempo de execução agora é rejeitado com erros do compilador.
  • P2186R2 Suporte de coleta de lixo removido. Esta alteração remove declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safety. Anteriormente, essas funções não tinham efeito.

Melhorias de desempenho destacadas

  • <format> agora deteta quando está a escrever para um back_insert_iterator para um basic_string ou um vector, e faz uma chamada mais rápida para insert() no end() do contentor.
  • Melhoramos o desempenho de std::find() e std::count() para vector<bool> 19x e 26x (vezes, não por cento).
  • Melhorámos o desempenho de std::count() para vector<bool>
  • std::byte agora tem o mesmo desempenho que unsigned char em reverse() e variant::swap()

Suporte a Clang e LLVM

  • As ferramentas LLVM fornecidas com o Visual Studio são atualizadas para LLVM 12. Para obter mais informações, consulte as notas de versão do LLVM.

  • O suporte a Clang-cl foi atualizado para LLVM 12.

  • Agora você pode depurar processos em execução em um sistema remoto do Visual Studio usando LLDB.

C++ AMP obsoleto

  • Os cabeçalhos AMP C++ foram preteridos. Incluir <amp.h> em um projeto C++ gera erros de compilação. Para silenciar os erros, defina _SILENCE_AMP_DEPRECATION_WARNINGS. Para obter mais informações, consulte nossos links de depreciação de AMP.

Melhorias no IntelliSense

  • Fizemos melhorias no C++ IntelliSense ao fornecer navegação e realce de sintaxe para tipos de módulos e unidades de cabeçalho importados. O IntelliSense é uma área ativa de investimento para nós. Ajude-nos a melhorar: partilhe os seus comentários sobre a Comunidade de Programadores utilizando Ajuda>Enviar Comentários.
  • Melhoramos o desempenho do C++ IntelliSense otimizando o uso do cabeçalho em cache e o acesso ao banco de dados de símbolos, fornecendo tempos de carregamento aprimorados para entrar em seu código.
  • O IntelliSense Code Linter para C++ agora está ativado por padrão, fornecendo sugestões instantâneas à medida que você digita e sugestões de correção para defeitos de código comuns.
  • C++ IntelliSense para projetos CMake agora funciona ao usar uma predefinição com um nome para exibição.

Atualizações de carga de trabalho C++

  • Atualizado para NDK r21 LTS na carga de trabalho de desenvolvimento móvel C++.
  • Agora, o desenvolvimento de jogos C++ no pacote de trabalho instala a versão mais recente do Unreal Engine com suporte ao Visual Studio 2022.

Melhorias na análise de código

  • A análise de código agora impõe que os valores de retorno de funções anotadas com _Check_return_ ou _Must_inspect_result_ devem ser verificados.
  • A deteção de desreferência de ponteiro nulo foi melhorada nas nossas ferramentas de análise de código.
  • Adicionado suporte ao gsl::not_null na análise de código.
  • Suporte para Libfuzzer na opção de compilador /fsanitize=fuzzer.

Notas de versão para versões mais antigas

Notas de versão para versões C++ mais antigas também estão disponíveis:

Problemas conhecidos

C++ IntelliSense

Para obter mais informações sobre outros problemas em aberto e soluções alternativas disponíveis para C++ no Visual Studio 2022, consulte a lista de problemas de da Comunidade de Desenvolvedores C++.

Comentários e sugestões

Adoraríamos ouvir a sua opinião! Você pode Relatar um problema ou sugerir um recurso usando o ícone Enviar comentários no canto superior direito do instalador ou do IDE do Visual Studio, ou Ajuda>Enviar Comentários. Você pode acompanhar seus problemas usando Visual Studio Developer Community, onde você adiciona comentários ou encontra soluções. Você também pode obter ajuda gratuita de instalação através do nosso suporte via Live Chat .

Blogues

Aproveite as informações e recomendações disponíveis no site Microsoft Developer Blogs para se manter atualizado sobre todas as novas versões. Os blogs incluem posts profundos sobre uma ampla gama de recursos. O C++ Team Blog e o Visual Studio Blog são de particular interesse.