C/C++插件为C/C++开发者提供了丰富的设置项,包括三个方面的设置:
- env:用户自定义的变量,可以通过类似
$$
或者$env:$
形式进行变量替换; - configurations:定义了包括但不限于编译器、头文件路径、C++标准在内的多种设置;
- version:定义了c_cpp_propertie.json的版本,一般不修改;
我们重点关注configuration,它既可以通过settings.json,也可以通过特有的c_cpp_properties.json设置。 从C/C++角度而言,前者是全局变量,后者是局部变量。
1.1 通过c_cpp_properties.json设置的值configurations属性是c_cpp_properties.json最核心的功能,具体的:
compilerPath:编译器完整路径,如/usr/bin/gcc,提供路径可以帮助提供更加精准的IntelliSense功能。插件将会按照一定的顺序搜寻编译器。
intelliSenseMode:默认感知模式。如果没有指定,将根据平台提供默认值,Windows:msvs-x64 Linux:gcc-x64 macOS:clang-x64
includePath:头文件包含路径
cStandard/cppStandard:指定C/C++语言标准版本
1.2 通过setting.json设置默认值settings.json可以是工作区相关的(局部),也可以是用户区(全局)的。
在setting设置的C/C++属性是c_cpp_properties.json没有设置属性时默认填充值,设置属性可以是:
C_Cpp.default.includePath : string[]
C_Cpp.default.defines : string[]
C_Cpp.default.compileCommands : string
C_Cpp.default.macFrameworkPath : string[]
C_Cpp.default.forcedInclude : string[]
C_Cpp.default.intelliSenseMode : string
C_Cpp.default.compilerPath : string
C_Cpp.default.cStandard : c89 | c99 | c11 | c17
C_Cpp.default.cppStandard : c++98 | c++03 | c++11 | c++14 | c++17 | c++20
C_Cpp.default.browse.path : string[]
C_Cpp.default.browse.databaseFilename : string
C_Cpp.default.browse.limitSymbolsToIncludedHeaders : boolean
你可以设置所有关于C/C++的包含路径、预定义红、编译命令和标准的等在内的所有默认值,如果c_cpp_properties.json没有这些值,将会使用上述定义进行设置。下面这个默认值是设置在当前工作空间下的默认值: 下面是通过UI界面设置默认值:
两者的作用都是在c_cpp_properties.json没有这些值的情况下的默认值。不过前者是对于当前工作空间有效,后者是对于所有工作空间都有效的设置(创建了的没创建的)。
提供代码补全功能,显示悬停信息、参数信息、快速信息。使用快捷键Ctrl+Space可以主动触发智能提示
2.2 代码格式化C/C++插件内置了ClangFormat代码格式化构建,提供了代码格式化功能。
- 格式化文档 格式化整个文件(Shift+Alt+F)
- 格式化选定文本 (Ctrl+K->Ctrl+F)
除了主动格式化,还可进行设置完成自动格式化,在setting.json中修改下面键值对:
- editor.formatOntype:输入一行后,自动格式化当前行(分号
;
触发) - editor.formatOnSave:保存后格式化文件
其实这应该是属于编译器的功能:
- Go to Definition F12
- Peek Definition Alt+F12
- Go to Declaration
- Peek Declaration
- Go to Reference Shift+F12
C/C++插件提供了一系列常用的代码片段。代码片段就是编译器帮你书写的一些常见的代码模板,如输入for: 按下TAB接受光标所在代码片段,上下选择不同的代码片段,这里选择第一个,代码就自动生成了:
之前搜索都是使用ctrl+F进行搜索,这是进行纯文本搜索。如果要进行符号搜索,可以使用:
- Ctrl+Shift+O 当前文件符号进行搜索
- Ctrl+T 搜索当前工作空间所有符号