编辑和导航 C++ 代码
本文提供了有关 C/C++ 扩展特定的代码编辑和导航功能的概述。有关在 Visual Studio Code 中进行一般编辑和导航的更多信息,请参阅 基本编辑 和 代码导航.
编辑 C++ 代码
C/C++ 扩展提供的源代码编辑功能是编辑、格式化和理解您的代码库的强大工具。
识别头文件
为了提供最佳的编辑体验,C++ 扩展需要知道在您的代码中引用的每个头文件的位置。默认情况下,扩展会在当前源目录、其子目录和一些特定于平台的位置进行搜索。如果无法找到引用的头文件,会在其下显示一条红色波浪线。#包含指令。
要指定额外的包含目录,
- 选择一个
#包含没有参考的路径。 - 选择出现的灯泡并选择
编辑 "includePath" 设置,打开 C/C++ 扩展的设置编辑器。 - 在包含路径部分,您可以指定任何附加包含目录的路径。

列表成员
当您输入成员访问符号 (输入:.或->),编辑器会显示成员列表。随着您输入更多的字母,列表会实时过滤:

代码格式化
Visual Studio Code 的 C/C++ 扩展支持使用 clang-format 和 vc_format 对源代码进行格式化。这两个格式化选项都包含在扩展中,其中 clang-format 是默认选项。
你可以使用格式化文档 (⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I)) 或者仅格式化当前选择,在右键点击上下文菜单中使用格式化选择 (⌘K ⌘F (Windows, Linux Ctrl+K Ctrl+F))。你还可以通过用户手势,如输入、保存和粘贴,触发格式化,通过以下设置:
编辑器.保存时格式化- 保存文件时的格式。编辑器.格式化输入- 按键输入格式(在;字符上触发)。
要了解更多有关格式化的信息,请参见格式化。
Clang格式化
默认情况下,clang-format样式设置为文件这意味着,如果一个.clang-format如果在工作区中找到文件,文件中指定的设置将作为格式参考。否则,格式将基于在默认样式中指定的样式。C_Cpp.clang_format_fallbackStyle 设置.
目前,默认的格式化样式是视觉工作室, 类似于 Visual Studio 中的默认代码格式化程序。它包含以下设置:
UseTab: (VS Code 当前设置)
IndentWidth: (VS Code 当前设置)
BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: 否
IndentCaseLabels: 否
ColumnLimit: 0
要使用与扩展自带的不同的 clang-format 版本,请更改C_Cpp.clang_format_path 设置到安装clang-format二进制文件的路径。
例如,在Windows平台上,使用:
"C_Cpp.clang_format_path": "C:\\Program Files (x86)\\LLVM\\bin\\clang-format.exe"
输入:vc_format
默认情况下,如果一个.editorconfig文件中包含相关设置,当格式化代码时,将使用Visual C++格式化引擎,而不是clang-format。否则,请导航到C_Cpp.格式化 设置 并将其设置为 输入:vc_format使用Visual C++格式化引擎。
增强语义着色
当启用IntelliSense时,Visual Studio Code C/C++扩展支持语义着色。有关为类、函数、变量等设置颜色的更多信息,请参见增强的着色。有关配置IntelliSense的更多信息,请参见IntelliSense配置。
快速信息
您可以将鼠标悬停在符号上,以查看其定义的内联视图:

Doxygen 注释
Doxygen 是一个从源代码生成文档的工具。当你用注释对代码进行注释时,Doxygen 会为此生成文档。对于 Doxygen 注释,输入/**并按进入生成 Doxygen 注释块。支持的 Doxygen 标签包括:@摘要输入:@tparam,@参数,@返回,@异常,@已弃用,@注释,@注意,和@前输入:.
Markdown 注释
默认情况下,C++ 扩展支持在编辑器中显示 markdown 的子集。该子集支持所有 markdown 注释,除了符号输入:_和输入:*切换新的评论中的Markdown设置,以启用所有Markdown,保留此Markdown子集,或禁用Markdown支持。
导航源代码
源代码导航功能可以帮助你更好地理解代码库。这些功能使你能够快速搜索代码中的符号,导航到其定义,或找到对它们的引用。
导航是由存储在本地符号信息数据库中的标签集驱动的。每当打开一个包含C++源代码文件的文件夹时,C/C++扩展会创建一个包含这些文件中定义的符号的数据库。每当文件更改时,该数据库会进行更新。如果文档在未保存的情况下关闭,数据库会更新到上次保存的状态。
搜索符号
您可以在当前文件或工作区中搜索符号,以更快地导航您的代码。
要在一个文件中搜索符号,请按⇧⌘O(Windows, LinuxCtrl+Shift+O),然后输入您要查找的符号名称。出现一个潜在匹配的列表,列表会随着您的输入进行过滤。从匹配列表中选择一个以导航到该符号的位置。

在当前工作区中搜索符号,请按⌘T(Windows, LinuxCtrl+T),然后输入符号的名称。将会出现一个潜在匹配的列表。如果你选择的匹配位于未打开的文件中,文件将会在导航到匹配位置之前被打开。

您还可以通过访问这些命令来搜索符号 命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))。使用 快速打开 (⌘P (Windows, Linux Ctrl+P)),然后输入 @命令搜索当前文件,或#命令用于搜索当前工作区。⇧⌘O(Windows, Linux Ctrl+Shift+O)和⌘T(Windows, Linux Ctrl+T)是搜索的快捷键@和#命令。
调用层次结构
调用层次视图显示了函数的所有调用或被调用情况。它使您能够了解源代码中函数之间的复杂调用关系。
要查看调用层次结构,请选择一个函数,右键单击以显示上下文菜单,并选择显示调用层次结构。您也可以使用键盘快捷键(Shift+Alt+H 在Windows上),或者调用命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P))并运行命令调用:显示调用层次结构。这会在侧栏中填充调用树,显示被您选择的函数调用的所有函数。

切换侧栏菜单中的电话图标以切换到入站呼叫。每当您的函数被另一个函数引用时,入站呼叫就会显示。您还可以通过选择已在调用树中显示的函数并右键单击该函数来浏览嵌套调用,以查看可用命令。

窥视
Peek 功能在Peek Windows中显示几行代码,这样您无需离开当前位置。这对于在不离开当前代码的情况下快速了解符号的上下文非常有用。
要打开一个预览Windows,右键单击以打开上下文菜单,然后选择预览。在那里,您可以选择预览符号的定义、声明、类型定义或引用。

打开预览Windows,浏览显示的结果列表,找到您感兴趣的那一个。如果您想导航到这些结果之一的位置,请选择该结果或双击预览Windows左侧显示的源代码。
转到定义
使用转到定义功能快速导航到源代码中符号的定义位置。在源代码中选择一个符号,然后按F12,或右键单击并从上下文菜单中选择转到定义。当符号只有一个定义时,您将直接导航到其位置,否则 competing definitions 将在 peek Windows中显示,如上一节所述。
如果找不到您选择的符号的定义,C/C++ 扩展将自动搜索该符号的声明。
转到声明
使用转到声明功能导航到源代码中符号声明的位置。此功能与转到定义相同,但用于声明。在源代码中选择一个符号,右键单击,并从上下文菜单中选择转到声明。这将导航到符号声明的位置。
转到参考文献
使用转到引用功能,了解符号在源代码中被引用的频率和位置。在源代码中选择一个符号,然后按⇧F12(Windows, LinuxShift+F12)或右键单击并从上下文菜单中选择转到引用。如果找到任何引用,它们将显示在一个预览Windows中。
转到类型定义
使用转到类型定义功能跳转到源代码中类型定义的位置。在源代码中选择一个类型,右键单击以打开上下文菜单,然后选择转到类型定义。
下一步
继续阅读,了解:
- 调试 C++ 代码
- 配置IntelliSense
- 配置 VS Code 用于 MSVC
- 配置 VS Code 以支持 Mingw-w64 和 GCC
- 配置 VS Code 用于 macOS
- VS Code 基本编辑
- 在 VS Code 中进行代码导航
- VS Code 中的任务
如果您有任何其他问题或遇到任何问题,请在 GitHub 上提交问题。您可能需要提供扩展的日志信息以帮助诊断问题。请参阅 C/C++ 扩展日志 以获取提供扩展日志的帮助。