这将生成一个c_cpp_properties.json文件,允许您添加其他路径并定义以正确启用代码导航和自动完成。
下面您可以看到MinGW C 编译器已被设置为Windows的默认编译器。扩展将使用该信息来确定系统包含路径和定义,以便不需要添加它们c_cpp_properties.json。
{ "name": "Win32", "includePath": [ "${workspaceFolder}" ], "defines": [ "_DEBUG", "UNICODE" ], "compilerPath": "C:\\MinGW-w64\\bin\\gcc.exe", "intelliSenseMode": "clang-x64", "browse": { "path": [ "${workspaceFolder}" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } }
构建代码
如果要从VS Code构建应用程序,则需要生成一个tasks.json文件:
- 打开命令选项板(⇧⌘P)。选择Tasks:Configure Tasks ...命令,单击模板中的Create tasks.json文件,您将看到任务运行器模板列表。选择Others以创建运行外部命令的任务。更改为command用于构建应用程序的命令行表达式(例如g )。添加任何必需的args(例如-g构建用于调试)。您还可以将其更改label为更具描述性。
您现在应该tasks.json在工作区.vscode文件夹中看到一个类似于以下内容的文件:
{ "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "g ", "args": [ "-g", "helloworld.cpp" ] } ] }
如果您希望能够使用“ 任务:运行构建任务”(⇧⌘B)构建应用程序,则可以将其添加到build组中。
{
"version": "2.0.0",
"tasks": [
{
"label": "build hello world",
"type": "shell",
"command": "g ",
"args": [
"-g", "helloworld.cpp"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
有关任务的更多信息,请参阅通过任务与外部工具集成。
调试代码
要启用调试,您需要生成一个launch.json文件:
- 单击补充工具栏中的“调试”图标,导航到“调试”视图。在“ 调试”视图中,单击“ 配置”图标。从“ 选择环境”下拉列表中选择C (GDB/LLDB)(以使用GDB或LLDB)或C (Windows)(以使用Visual Studio Windows调试程序)。这将使用两种配置创建一个用于编辑的文件: launch.jsonC Launch定义了在开始调试时启动应用程序的属性。C Attach定义了附加到已经运行的进程的属性。
- program使用您正在调试的程序的路径更新该属性。如果您希望在开始调试时构建应用程序,请添加一个preLaunchTask属性,其中包含您在其中创建的构建任务的名称tasks.json(上例中的“构建hello world”)。
下面是使用MinGW GDB调试器的示例:
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/a.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "C:\\mingw\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build hello world" } ] }
要了解更多信息,请参阅配置launch.json以进行C / C 调试。
如果在Windows上使用GDB进行调试,请参阅使用GDB进行Windows调试。
编辑代码
代码格式
Visual Studio Code的C / C 扩展支持使用扩展名附带的clang格式进行源代码格式化。
您可以使用格式文档(⇧⌥F)格式化整个文件,也可以使用右键单击上下文菜单中的格式选择(⌘K⌘F)格式化当前选择。您还可以使用以下设置配置自动格式化:
- editor.formatOnSave - 保存文件时格式化。editor.formatOnType- 在键入时格式化(在;字符上触发)。
默认情况下,clang格式样式设置为“file”,这意味着它会.clang-format在工作区内查找文件。如果.clang-format找到该文件,则根据文件中指定的设置应用格式。如果.clang-format工作区中未找到任何文件,则会根据C_Cpp.clang_format_fallbackStyle 设置中指定的默认样式应用格式设置。目前,默认格式样式是“Visual Studio”,它是Visual Studio中默认代码格式化程序的近似值。
“Visual Studio”clang格式样式还不是官方的OOTB clang格式样式,但它暗示了以下clang格式设置:
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"
自动完成
自动完成由与Visual Studio相同的引擎提供支持。当您的工作区配置了所有必需的包含路径和定义时,您将获得最相关的建议(请参阅上面的“配置IntelliSense”部分)。
导航代码
C / C 扩展提供的源代码导航功能是理解和绕过代码库的强大工具。这些功能由存储在符号信息的离线数据库中的标签提供支持。安装了C / C 扩展后,只要将包含C 源代码文件的文件夹加载到VS代码中,就会生成此数据库。当标记解析器生成此信息时,数据库图标将显示在活动配置名称旁边(下图中的“Win32”)。
当图标消失时,源代码符号已在脱机数据库中标记。
指定其他包含目录以获得更好的符号支持
为了提供最佳体验,VS Code的C / C 扩展需要知道它在哪里可以找到代码中引用的每个头文件。默认情况下,扩展名搜索当前源目录,其子目录和某些特定于平台的位置。如果找不到引用的头文件,VS Code会在引用它的每个#include指令下面显示绿色波形。
要指定要搜索的其他包含目录,请将光标放在显示绿色波浪线的任何#include指令上,然后在出现时单击灯泡操作。这将打开文件c_cpp_properties.json进行编辑; 在这里,您可以通过向“browse.path”属性添加更多目录来单独为每个平台配置指定其他包含目录。
搜索符号
您可以在当前文件或工作区中搜索符号,以便更快地导航代码。
要在当前文件中搜索符号,请按⇧⌘O,然后输入您要查找的符号的名称。将显示潜在匹配列表,并在您键入时进行过滤。从匹配列表中选择以导航到其位置。
要在当前工作空间中搜索符号,请按⌘T,然后输入符号的名称。潜在匹配列表将如前所示。如果您选择的文件尚未打开,则会在导航到匹配位置之前打开该文件。
或者,如果您愿意,可以通过命令选项板访问这些命令来搜索符号。使用快速打开(⌘P)然后输入'@'命令搜索当前文件,或输入'#'命令搜索当前工作区。⇧⌘O和⌘T分别只是'@'和'#'命令的快捷方式,所以一切都是一样的。
窥视定义
您可以使用Peek Definition功能快速查看符号的定义方式。此功能在窥视窗口内的定义附近显示几行代码,因此您可以在不离开当前位置的情况下查看。
要查看符号的定义,请将光标放在源代码中使用的任何位置的符号上,然后按⌥F12。或者,您可以从上下文菜单中选择Peek Definition(右键单击,然后选择Peek Definition)。