编辑与导航C++代码

本文概述了 C/C++ 扩展中特定的代码编辑和导航功能。有关 Visual Studio Code 中通用编辑和导航的更多信息,请参见基础编辑代码导航

编辑C++代码

C/C++ 扩展提供的源代码编辑功能是编辑、格式化和理解代码库的强大工具。

识别头文件

为了提供最佳的编辑体验,C++扩展需要知道代码中引用的每个头文件的位置。默认情况下,扩展会搜索当前源目录、其子目录以及一些平台特定的位置。如果找不到引用的头文件,下面会显示一个红色曲线#include指令。

为了指定额外的包含目录,

  1. 选择一个#include没有参考的路径。
  2. 选择出现的灯泡并选择编辑“includePath”设置该编辑器打开了C/C++扩展的设置编辑器。
  3. “包含路径”部分,你可以指定任何额外include目录的路径。

在include路径中添加新头部的过程

成员名单

当你输入成员访问符号时(.或者),编辑器会显示成员列表。随着你输入更多字母,列表会实时被筛选:->

成员名单

代码格式化

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)格式化当前选择。你还可以根据用户手势(如输入、保存和粘贴)触发格式化,使用以下设置

  • editor.formatOnSave(编辑格式保存)- 保存文件时格式化。
  • editor.formatOnType- 在输入时格式化(在 ; 字符触发)。

想了解更多关于格式化的信息,请参见“格式化”。

撞击格式

默认情况下,clang格式风格设置为文件. 这意味着如果.clang格式文件在你的工作区中找到,文件中指定的设置作为格式参考。否则,格式基于C_Cpp.clang_format_fallbackStyle 环境

目前默认格式格式为Visual Studio,是Visual Studio中默认代码格式化器的近似。它包含以下设置:

UseTab: (VS Code current setting)
IndentWidth: (VS Code current setting)
BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: false
ColumnLimit: 0

要使用与扩展自带版本不同的clang-格式,请更改C_Cpp.clang_format_path 设置为安装 Clang-格式二进制文件的路径。

例如,在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 评论块。支持的带氧标签包括:@brief,@tparam,@param,@return,@exception,@deprecated,@note,@attention, 和@pre.

Markdown 评论

默认情况下,C++扩展支持在编辑器中显示markdown的子集。该子集支持除符号和 以外的所有标记删除注释。切换新的评论中Markdown设置,要么启用所有Markdown,保留这部分Markdown,要么关闭Markdown支持。_*

导航源代码

源代码导航功能可以帮助你更好地理解代码库。这些工具让你能快速搜索代码中的符号,导航到它们的定义,或找到它们的引用。

导航由存储在本地符号信息数据库中的一组标签驱动。每当打开包含 C++ 源代码文件的文件夹时,C/C++ 扩展会创建一个包含这些文件中符号的数据库。每当文件发生更改时,该数据库都会更新。如果文档未保存就关闭,数据库将更新为最后保存的状态。

搜索符号

你可以在当前文件或工作区中搜索符号,以更快地导航代码。

要在当前文件中搜索符号,按⇧⌘O(Windows,Linux Ctrl+Shift+O),然后输入你要找的符号名称。屏幕上会出现潜在匹配列表,随着你输入而筛选。从匹配列表中选择,导航到该符号的位置。

搜索当前文件

要在当前工作区中搜索符号,按⌘T(Windows,Linux Ctrl+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),并运行命令 Calls: Show Call Hierarchy。这会在侧边栏的调用树中填充你所选函数调用的所有函数。

选择呼叫层级并在侧边栏显示通话

在侧边栏菜单中切换电话图标切换到来电。来电显示你的函数被另一个函数引用。你也可以通过选择调用树中已显示的函数并右键点击该函数来查看嵌套调用,查看可用的命令。

呼号层级的嵌套呼叫

偷看

窥视功能会在窥视窗口内显示几行代码,这样你就不用离开当前位置。它有助于快速理解符号的上下文,而无需离开当前代码。

要打开窥视窗口,右键点击进入右键菜单,然后选择“窥视”。在那里,你可以选择查看符号的定义、声明、类型定义或引用。

Peek定义

打开“窥视窗口”后,你浏览显示的结果列表,找到你感兴趣的那个。如果您想导航到这些结果的位置,请选择结果或双击查看窗口左侧显示的源代码。

前往定义

使用“前往定义”功能快速导航到源代码中定义符号的位置。在源代码中选择一个符号,然后按F12,或者右键点击,在右键菜单中选择“前往定义”。当符号只有一个定义时,你会直接导航到它的位置,否则竞争定义会像上一节描述的那样显示在窥视窗口中。

如果找不到你所选符号的定义,C/C++扩展会自动搜索该符号的声明。

前往声明

使用“前往声明”功能,导航到源代码中声明符号的位置。该功能与“进入定义”相同,但用于声明。在源代码中选择一个符号,右键点击,然后在右键菜单中选择“前往声明”。这会引导你找到符号声明的位置。

查看参考文献

使用“访问参考”功能来了解符号在源代码中被引用的频率和位置。在源代码中选择一个符号,按⇧F12(Windows,Linux Shift+F12),或右键点击后从右键菜单选择“前往参考文献”。如果找到任何参考文献,会显示在窥视窗口中。

前往类型定义

使用“前往类型定义”功能,跳转到源代码中定义的类型位置。在源代码中选择一个类型,右键点击打开右键菜单,然后选择“前往类型定义”。

下一步

继续阅读,了解:

如果你还有其他问题或遇到问题,请在GitHub提交问题。你可能会被要求提供扩展的日志信息,以帮助诊断问题。有关提供扩展日志的帮助,请参见 C/C++ 扩展日志