Configurar um projeto C++ para IntelliSense
Em alguns casos, talvez seja necessário configurar manualmente seu projeto C++ para que o IntelliSense funcione corretamente. Para projetos MSBuild (com base em arquivos .vcxproj), você pode ajustar as configurações nas propriedades do projeto. Para projetos não-MSBuild, você ajusta as configurações no arquivo CppProperties.json no diretório raiz do projeto. Em alguns casos, talvez seja necessário criar um arquivo de dicas 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 para ficheiro único
Quando abre um ficheiro que não está incluído num projeto, o Visual Studio fornece algum suporte IntelliSense, mas, por padrão, não são mostradas sublinhas onduladas de erro. Se o da Barra de Navegação
Verifique 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 é a janela Lista de Erros. Para ver todos os erros do IntelliSense para o arquivo de origem atual juntamente com todos os arquivos de cabeçalho incluídos, escolha Build + IntelliSense no menu suspenso:
O IntelliSense produz um máximo de 1000 erros. Se houver mais de 1000 erros nos arquivos de cabeçalho incluídos por um arquivo de origem, o arquivo de origem mostra apenas um único erro no início do arquivo de origem.
Verifique se os caminhos de #include estão corretos
Projetos MSBuild
Se você executar suas compilações fora do IDE do Visual Studio e suas compilações forem bem-sucedidas, 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 em 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 ver os valores atuais para macros de compilação, como VC_IncludePath, selecione a linha Incluir diretórios 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, em seguida, escolha Incluir caminho de pesquisa na categoria IntelliSense.
Projetos de pasta aberta
Para projetos CMake, certifique-se de que os caminhos de #include estão 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 com o analisador de tags
O analisador de tags é um analisador C++ "aproximado" que é usado para exploração e navegação. É muito rápido, mas não tenta compreender completamente todas as construções 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 Tag Parser encontra uma construção de código desconhecida, ele pode ignorar toda essa região do código.
Há duas maneiras comuns em que esse problema se manifesta no Visual Studio:
Se a Barra de Navegação mostrar uma macro mais interna, a definição de função atual foi ignorada:
O IDE oferece para criar uma definição de função para uma função que já está definida:
Para corrigir esses tipos de problemas, adicione um arquivo chamado cpp.hint à raiz do diretório da solução. Para mais informações, consulte os Arquivos de Dicas .
Os erros do analisador de tags aparecem na janela Lista de Erros .
Validar configurações de projeto com registo de diagnóstico
Para verificar se o compilador IntelliSense está a usar as opções corretas do compilador, incluindo os caminhos de inclusão e as macros de pré-processamento, ative o Registo de Diagnóstico das linhas de comando do IntelliSense em Ferramentas > Opções > Editor de texto > C/C++ > Avançado > Registo de Diagnóstico. Defina Ativar registo em log como True, Nível de registo em log para 5 (mais detalhado) e Filtro de registo em log para 8 (IntelliSense logging).
A janela de saída agora mostrará as linhas de comando que são passadas para o compilador IntelliSense. Aqui está um exemplo de saída:
[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 seu projeto contiver $(MyVariable)\Includee o log de diagnóstico mostrar /I\Include como um caminho Include, 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 IntelliSense sincronizado com o código, o Visual Studio inicia automaticamente compilações 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 IntelliSense em tempo hábil. Por exemplo, quando você executa um git pull ou comando git checkout, o Visual Studio pode levar até uma hora para detetar alterações nos arquivos. Você pode forçar um reescanear de todos os arquivos em uma solução clicando com o botão direito no nó do projeto em Gerenciador de Soluções e escolhendo Reescanear Solução.
Solução de problemas de falhas de compilação do IntelliSense
Uma compilação do IntelliSense não produz binários, mas ainda pode falhar. Uma possível causa de falha são os arquivos .props ou .targets personalizados. No Visual Studio 2017 versão 15.6 e posterior, erros de compilação relacionados apenas ao IntelliSense são registrados na janela de Saída. Para vê-los, defina Mostrar saída do para Solução:
A mensagem de erro pode instruí-lo a habilitar o rastreamento em tempo de projeto.
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 compilação.
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++.