Configurar um projeto do C++ para o IntelliSenseConfigure a C++ project for IntelliSense

Em alguns casos, pode ser necessário configurar manualmente o projeto do C++ para fazer com que o IntelliSense funcione corretamente.In some cases, you might need to manually configure your C++ project to get IntelliSense working properly. Para projetos do MSBuild (com base em arquivos .vcxproj), é possível ajustar as configurações nas propriedades do projeto.For MSBuild projects (based on .vcxproj files), you can adjust settings in project properties. Para projetos não MSBuild, as configurações são ajustadas no arquivo CppProperties.json no diretório raiz do projeto.For non-MSBuild projects, you adjust settings in the CppProperties.json file in the root directory of the project. Em alguns casos, pode ser preciso criar um arquivo de dicas para ajudar o IntelliSense a entender as definições de macro.In some cases, you may need to create a hint file to help IntelliSense understand macro definitions. O ambiente de desenvolvimento integrado (IDE) do Visual Studio ajuda a identificar e corrigir problemas do IntelliSense.The Visual Studio IDE helps you identify and fix IntelliSense problems.

IntelliSense de arquivo únicoSingle-file IntelliSense

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.When you open a file that is not included in a project, Visual Studio provides some IntelliSense support but by default no error squiggles are shown. 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.If the Navigation Bar says Miscellaneous Files, then that probably explains why you are not seeing error squiggles under incorrect code, or why a preprocessor macro is not defined.

Verificar a Lista de ErrosCheck the Error List

Se um arquivo não for aberto no modo de arquivo único e o IntelliSense não estiver funcionando corretamente, o primeiro lugar a verificar é a janela de Lista de Erros.If a file is not open in single-file mode, and IntelliSense is not working correctly, the first place to check is the Error List window. 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:To see all the IntelliSense errors for the current source file together with all included header files, choose Build + IntelliSense in the dropdown:

VC++ IntelliSense na Lista de Erros

O IntelliSense produz um máximo de 1.000 erros.IntelliSense produces a maximum of 1000 errors. 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.If there are over 1000 errors in the header files included by a source file, then the source file shows only a single error squiggle at the very start of the source file.

Certificar-se de que os caminhos de #include estão corretosEnsure #include paths are correct

Projetos do MSBuildMSBuild projects

Se você executar suas compilações fora do ambiente de desenvolvimento integrado (IDE) do Visual Studio e elas estiverem tendo êxito, mas o IntelliSense está incorreto, é possível que sua linha de comando esteja fora de sincronia com as configurações de projeto para uma ou mais configurações.If you run your builds outside of the Visual Studio IDE, and your builds are succeeding but IntelliSense is incorrect, it is possible that your command line is out of sync with the project settings for one or more configurations. Clique com o botão direito do mouse no nó do projeto no Gerenciador de Soluções e certifique-se de que todos os caminhos de #include estejam adequados para a configuração e a plataforma atual.Right-click on the project node in Solution Explorer and make sure that all #include paths are correct for the current configuration and platform. Se os caminhos forem idênticos em todas as configurações e plataformas, você pode selecionar Todas as configurações e Todas as plataformas e depois verificar se os caminhos estão corretos.If the paths are identical in all configurations and platforms, you can select All configurations and All platforms and then verify that the paths are correct.

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.To see the current values for build macros such as VC_IncludePath, select the Include Directories line and click the dropdown on the right. Depois escolha <Editar> e clique no botão Macros.Then choose <Edit> and click on the Macros button.

projetos MakefileMakefile projects

Para projetos Makefile baseados no modelo de projeto NMake, escolha NMake no painel esquerdo e caminho de pesquisas de inclusão na categoria IntelliSense:For Makefile projects that are based on the NMake project template, choose NMake in the left pane and then choose Include search path under the IntelliSense category:

Caminhos de inclusão no projeto Makefile

Projetos de pasta abertaOpen Folder projects

Para projetos CMake, certifique-se de que os caminhos de #include estejam especificados corretamente para todas as configurações em CMakeLists.txt.For CMake projects, make sure that #include paths are specified correctly for all configurations in CMakeLists.txt. Outros tipos de projeto podem exigir um arquivo CppProperties.json.Other project types might require a CppProperties.json file. Para saber mais, confira Configurar o IntelliSense com CppProperties.json.For more information, see Configure IntelliSense with CppProperties.json. Os caminhos devem estar corretos para cada configuração definida no arquivo.Make sure that the paths are correct for each configuration that is defined in the file.

Se houver um erro de sintaxe no arquivo CppProperties.json, o IntelliSense ficará incorreto nos arquivos afetados.If there is a syntax error in the CppProperties.json file, IntelliSense in the affected files will be incorrect. O Visual Studio exibirá o erro na Janela de Saída.Visual Studio will display the error in the Output Window.

Problemas do analisador de marcaTag parser issues

O analisador de marca é um analisador de C++ “difuso” usado para navegação.The tag parser is a "fuzzy" C++ parser that is used for browsing and navigation. Ele é muito rápido, mas não tenta entender completamente cada constructo de código.It is very fast but does not attempt to completely comprehend every code construct.

Por exemplo, ele não avalia os macros de pré-processador e, portanto, pode analisar incorretamente o código que faz uso intenso deles.For example, it doesn’t evaluate preprocessor macros, and therefore it may incorrectly parse code that makes heavy use of them. Quando o Analisador de Marca encontra um constructo de código não familiar, ele pode ignorar toda aquela região do código.When the Tag Parser encounters an unfamiliar code construct, it may skip that entire region of code.

Há duas maneiras comuns em que esse problema se manifesta no Visual Studio:There are two common ways in which this problem manifests in Visual Studio:

  1. Se a Barra de Navegação mostrar um macro mais interno, a definição da função atual foi ignorada:If the Navigation Bar shows an innermost macro, then the current function definition was skipped:

    O Analisador de Marca ignora a definição da função

  2. O IDE se oferece para criar uma definição de função para uma função já definida:The IDE offers to create a function definition for a function that is already defined:

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

Para corrigir esses tipos de problemas, adicione um arquivo chamado cpp.hint na raiz do diretório de soluções.To fix these kinds of problems, add a file named cpp.hint to the root of your solution directory. Para saber mais, confira Arquivos de dicas.For more information, see Hint Files.

Os erros de analisador de marca são exibidos na janela Lista de Erros.Tag parser errors appear in the Error List window.

Validar configurações do projeto com o log de diagnósticoValidate project settings with diagnostic logging

Para verificar se o compilador do IntelliSense está usando as opções adequadas do compilador, incluindo os caminhos de inclusão e os macros pré-processadores, ative o Log de diagnóstico das linhas de comando do IntelliSense em Ferramentas > Opções > Editor de texto > C/C++ > Avançado > Log de diagnóstico.To check whether IntelliSense compiler is using correct compiler options, including Include Paths and Preprocessor macros, turn on Diagnostic Logging of IntelliSense command lines in Tools > Options > Text Editor > C/C++ > Advanced > Diagnostic Logging. 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.Set Enable Logging to True, Logging Level to 5 (most verbose), and Logging Filter to 8 (IntelliSense logging).

A Janela de Saída passará a mostrar as linhas de comando que são passadas para o compilador do IntelliSense.The Output Window will now show the command lines that are passed to the IntelliSense compiler. Veja um exemplo de saída:Here is a sample output:

 [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 ajudar você a entender por que o IntelliSense está fornecendo informações imprecisas.This information may help you understand why IntelliSense is providing inaccurate information. Por exemplo, se o diretório de inclusão do seu projeto contiver $(MyVariable)\Include e o log de diagnóstico mostrar /I\Include como um caminho de inclusão, quer dizer que $(MyVariable) não foi avaliada e foi removida do caminho de inclusão final.For example, if your project’s Include directory contains $(MyVariable)\Include, and the diagnostic log shows /I\Include as an Include path, it means that $(MyVariable) wasn’t evaluated, and was removed from the final include path.

Sobre a compilação do IntelliSenseAbout the IntelliSense build

O Visual Studio usa um compilador de C++ dedicado para criar e manter o banco de dados que sustenta todos os recursos do IntelliSense.Visual Studio uses a dedicated C++ compiler to create and maintain the database that powers all the IntelliSense features. Para manter o banco de dados do IntelliSense em sincronia com o código, o Visual Studio inicia automaticamente as compilações somente IntelliSense como tarefas em segundo plano em resposta a determinadas alterações feitas nas configurações de projetos ou em arquivos de origem.To keep the IntelliSense database in sync with the code, Visual Studio automatically launches IntelliSense-only builds as background tasks in response to certain changes made in the project settings or source files.

No entanto, em alguns casos o Visual Studio pode não atualizar o banco de dados do IntelliSense de maneira oportuna.However, in some cases Visual Studio might not update the IntelliSense database in a timely manner. Por exemplo, quando você executa um comando de pull do git ou check-out do git, o Visual Studio pode levar até uma hora para detectar alterações nos arquivos.For example, when you run a git pull or git checkout command, Visual Studio might take up to an hour to detect changes in the files. 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.You can force a rescan of all files in a solution by right-clicking on the project node in Solution Explorer and choosing Rescan Solution.

Como solucionar problemas de falhas de compilação do IntelliSenseTroubleshooting IntelliSense build failures

Uma compilação do IntelliSense não produz binários, mas ainda assim poderá falhar.An IntelliSense build does not produce binaries, but it can still fail. Uma possível causa de falha são os arquivos personalizados .props ou .targets.One possible cause for failure is custom .props or .targets files. 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.In Visual Studio 2017 version 15.6 and later, IntelliSense-only build errors are logged to the Output window. Para vê-los, defina Mostrar saída de a Solução:To see them, set Show output from to Solution:

Janela de Saída para erros de solução

A mensagem de erro pode instruir você a habilitar o rastreamento de tempo de design:The error message might instruct you to enable design-time tracing:

 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%, que pode ajudar a diagnosticar a falha de compilação.If you set the environment variable TRACEDESIGNTIME to true and restart Visual Studio, you will see a log file in the %TEMP% directory, which might help diagnose the build failure.

Saiba mais sobre a variável de ambiente TRACEDESIGNTIME em Roslyn e Common Project System.To learn more about TRACEDESIGNTIME environment variable, see Roslyn and Common Project System. As informações neste artigo são relevantes para projetos do C++.The information in these articles is relevant for C++ projects.

Consulte tambémSee Also