Compartilhar via


Configurar um projeto do C++ para o IntelliSense

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 arquivos .vcxproj), você pode ajustar as configurações nas propriedades do projeto. Para projetos não 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

Ao abrir um arquivo que não está incluído em um projeto, o Visual Studio fornece um certo suporte IntelliSense, mas por padrão, nenhum rabisco de erro é mostrado. Se a Barra de Navegação exibir Arquivos Diversos, esse é o possível motivo de você não estar vendo rabiscos de erros na opção código incorreto, ou pode ser porque um macro pré-processador não foi definido.

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:

VC++ IntelliSense na Lista de Erros

O IntelliSense produz no máximo 1000 erros. Se houver mais de 1.000 erros nos arquivos de cabeçalho incluídos por um arquivo de origem, este mostrará apenas um rabisco de erro único 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.

Diretórios de inclusão VC++

Para ver os valores atuais para a compilação de macros, como VC_IncludePath, selecione a linha de Diretórios de Inclusão e clique na lista suspensa à direita. Em seguida, escolha <Editar> e clique no botão Macros.

Projetos Makefile

Para projetos Makefile baseados no modelo de projeto NMake, escolha NMake no painel esquerdo e caminho de pesquisas de inclusão na categoria IntelliSense:

Caminhos de inclusão no projeto Makefile

Projetos de pasta aberta

Para projetos CMake, certifique-se de que os caminhos de #include estejam especificados corretamente para todas as configurações em CMakeLists.txt. Outros tipos de projeto podem exigir um arquivo CppProperties.json. Para obter mais informações, consulte Configurar o IntelliSense 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 exibirá 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. É muito 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:

  1. Se a Barra de Navegação mostrar uma macro mais interna, a definição da função atual foi ignorada:

    Analisador de tags ignora definição de função

  2. O IDE oferece a criação de uma definição de função para uma função que já está definida:

    O Analisador de Marca se oferece para definir uma função existente

Para corrigir esses tipos de problemas, adicione um arquivo chamado 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 as opções do compilador corretas, incluindo as macros de Caminhos e Pré-processadores, ative o Log de Diagnóstico nas linhas de comando do IntelliSense em Ferramentas > Opções > Editor de Texto > C/C++ > Avançado > Log de Diagnóstico. Defina como True Habilitar registro em log, 5 (mais detalhado) para Nível de log e 8 (registro em log do IntelliSense) para Filtro de registro em log.

A Janela de Saída agora mostrará as linhas de comando que são passadas para o compilador do IntelliSense. Aqui está um resultado de exemplo:

[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)\Incluire o log de diagnóstico mostrar /I\Incluir como um caminho Incluir, 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 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.

Solução de problemas de falhas de build do IntelliSense

Um build do IntelliSense não produz binários, mas ainda pode falhar. Uma possível causa de falha são arquivos .props ou .targets personalizados. 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:

Janela de Saída para erros de 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 de ambiente TRACEDESIGNTIME como true e reiniciar o Visual Studio, verá um arquivo de log no diretório %TEMP%, o que pode ajudar a diagnosticar a falha de build.

Para saber mais sobre a variável de ambiente TRACEDESIGNTIME, consulte Roslyn e Common Project System. As informações nestes artigos são relevantes para projetos C++.