Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em alguns casos, talvez seja necessário configurar manualmente seu projeto C++ para que o IntelliSense funcione corretamente. Para projetos do MSBuild (com base em .vcxproj arquivos), você pode ajustar as configurações nas propriedades do projeto. Para projetos que não sejam MSBuild, ajuste as configurações no arquivo CppProperties.json no diretório raiz do projeto. Em alguns casos, talvez seja necessário criar um arquivo de dica para ajudar o IntelliSense a entender as definições de macro. O IDE do Visual Studio ajuda você a identificar e corrigir problemas do IntelliSense.
IntelliSense de arquivo único
Quando você abre um arquivo que não está incluído em um projeto, o Visual Studio fornece algum suporte do IntelliSense, mas por padrão nenhum erro é mostrado. Se a Barra de Navegação diz Arquivos Diversos, isso provavelmente explica por que você não vê erros em código incorreto ou por que uma macro de pré-processador não está definida.
Verificar a lista de erros
Se um arquivo não estiver aberto no modo de arquivo único e o IntelliSense não estiver funcionando corretamente, o primeiro lugar para verificar será a janela Lista de Erros . Para ver todos os erros de IntelliSense para o arquivo de origem atual, junto com todos os arquivos de cabeçalho incluídos, escolha Compilação + IntelliSense na lista suspensa:
O IntelliSense produz no máximo 1.000 erros. Se houver mais de 1.000 erros nos arquivos de cabeçalho incluídos por um arquivo de origem, o arquivo de origem mostrará apenas um único erro no início do arquivo de origem.
Verifique se os caminhos de #include estão corretos
Projetos do MSBuild
Se você executar seus builds fora do IDE do Visual Studio e seus builds estiverem sendo bem-sucedidos, mas o IntelliSense estiver incorreto, é possível que sua linha de comando esteja fora de sincronia com as configurações do projeto para uma ou mais configurações. Clique com o botão direito do mouse no nó do projeto no do Gerenciador de Soluções e verifique se todos os caminhos #include estão corretos para a configuração e a plataforma atuais. Se os caminhos forem idênticos em todas as configurações e plataformas, você poderá selecionar Todas as configurações e Todas as plataformas e verificar se os caminhos estão corretos.
Para visualizar os valores atuais das macros de compilação, como VC_IncludePath, selecione o menu suspenso Incluir Diretórios. Em seguida, escolha <Editar> e selecione o botão Macros .
Projetos Makefile
Para projetos Makefile baseados no modelo de projeto NMake, escolha NMake em Propriedades de Configuração e escolha Incluir caminho de pesquisa na categoria IntelliSense :
Projetos do CMake
Para projetos do CMake, verifique se os caminhos de #include são especificados corretamente para todas as configurações em CMakeLists.txt. Outros tipos de projeto podem exigir um CppProperties.json arquivo. Para obter mais informações, consulte Configurar a navegação de código com CppProperties.json. Verifique se os caminhos estão corretos para cada configuração definida no arquivo.
Se houver um erro de sintaxe no arquivo CppProperties.json, o IntelliSense nos arquivos afetados estará incorreto. O Visual Studio exibe o erro na Janela de Saída.
Problemas do analisador de tags
O analisador de tags é um analisador C++ fuzzy usado para navegação e exploração. É rápido, mas não tenta compreender completamente cada construção de código.
Por exemplo, ele não avalia macros de pré-processador e, portanto, pode analisar incorretamente o código que faz uso pesado delas. Quando o Analisador de Marcas encontra um constructo de código desconhecido, ele pode ignorar toda essa região de código.
Há duas maneiras comuns em que esse problema se manifesta no Visual Studio:
O IDE oferece a criação de uma definição de função para uma função que já está definida.
Se a barra de navegação mostrar uma macro mais interna, a definição da função atual foi ignorada:
O snippet de código mostra uma definição de macro para do_if que é usada dentro da função principal. O analisador de tags não entende a macro, portanto, em vez de o menu suspenso de navegação mostrar que o nome da função atual é main, ele mostra o nome da macro: do_if.
Para corrigir esses tipos de problemas, adicione um arquivo nomeado cpp.hint à raiz do diretório da solução. Para obter mais informações, consulte Arquivos de Dica .
Os erros de analisador de marca são exibidos na janela Lista de Erros.
Validar as configurações do projeto utilizando o log de diagnóstico
Para verificar se o compilador do IntelliSense está usando opções corretas do compilador, incluindo caminhos de inclusão e macros de pré-processador, ative o Registro de Diagnóstico das linhas de comando do IntelliSense.
Abra o painelFerramentas>Opções e expanda a seção deTodas as Configurações>Idiomas>C/C++>IntelliSense> Diagnóstico de registro.
Selecione a caixa de seleção Registrar informações de diagnóstico na janela de saída.
Defina o valor do Nível de Log para 5 (mais verbose).
Defina o valor do filtro de log como 8 (log do IntelliSense).
Abra a caixa de diálogo Ferramentas>Opções e expanda a seção Editor de Texto>C/C++>Avançado.
No grupo Log de Diagnóstico , defina a opção Habilitar Registro em Log como True.
Defina o valor do Nível de Log como 5 (mais detalhado).
Defina o valor do Filtro de Log como 8 (registro em log do IntelliSense).
Selecione OK.
A Janela de Saída agora mostra as linhas de comando que são passadas para o compilador do IntelliSense. Aqui está um exemplo de resultado:
[IntelliSense] Configuration Name: Debug|Win32
[IntelliSense] Toolset IntelliSense Identifier:
[IntelliSense] command line options:
/c
/I.
/IC:\Repo\Includes
/DWIN32
/DDEBUG
/D_DEBUG
/Zc:wchar_t-
/Zc:forScope
/Yustdafx.h
Essas informações podem ajudá-lo a entender por que o IntelliSense está fornecendo informações imprecisas. Por exemplo, se o diretório Include do projeto contiver $(MyVariable)\Include e o log de diagnóstico mostrar /I\Include como um caminho de inclusão, isso significa que $(MyVariable) não foi avaliado e foi removido do caminho de inclusão final.
Sobre a compilação do IntelliSense
O Visual Studio usa um compilador C++ dedicado para criar e manter o banco de dados que alimenta todos os recursos do IntelliSense. Para manter o banco de dados do IntelliSense sincronizado com o código, o Visual Studio inicia automaticamente builds somente do IntelliSense como tarefas em segundo plano em resposta a determinadas alterações feitas nas configurações do projeto ou nos arquivos de origem.
No entanto, em alguns casos, o Visual Studio pode não atualizar o banco de dados do IntelliSense em tempo hábil. Por exemplo, quando você executa um comando git pull ou um comando git checkout, o Visual Studio pode levar até uma hora para detectar alterações nos arquivos. Você pode forçar um novo exame de todos os arquivos em uma solução clicando com o botão direito do mouse no nó do projeto no Gerenciador de Soluções e escolhendo Examinar novamente a solução.
Solucionar problemas de erros de compilação do IntelliSense
Um build do IntelliSense não produz binários, mas ainda pode falhar. Uma possível causa de falha são arquivos personalizados .props ou .targets. No Visual Studio 2017 versão 15.6 e posterior, os erros de build somente do IntelliSense são registrados em log na Janela de Saída. Para vê-los, defina Mostrar saída de a Solução:
A mensagem de erro pode instruir você a habilitar o rastreamento de tempo de design:
error: Designtime build failed for project 'E:\src\MyProject\MyProject.vcxproj',
configuration 'Debug|x64'. IntelliSense might be unavailable.
Set environment variable TRACEDESIGNTIME=true and restart
Visual Studio to investigate.
Se você definir a variável TRACEDESIGNTIME de ambiente como true e reiniciar o Visual Studio, verá um arquivo de log no diretório, o %TEMP% que pode ajudar a diagnosticar a falha de build.
Para saber mais sobre a TRACEDESIGNTIME variável de ambiente, consulte Roslyn e builds de tempo de design. As informações nestes artigos são relevantes para projetos C++.