自定义默认设置
您可以覆盖 中设置的属性的默认值c_cpp_properties.json
。
Visual Studio 代码设置
以下C_Cpp.default.*
设置映射到 的配置块中的每个属性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.compilerArgs : string[]
C_Cpp.default.configurationProvider : string
C_Cpp.default.customConfigurationVariables : object | null
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++23
C_Cpp.default.enableConfigurationSquiggles : boolean
C_Cpp.default.mergeConfigurations : boolean
C_Cpp.default.systemIncludePath : string[]
C_Cpp.default.windowsSdkVersion : string
C_Cpp.default.browse.path : string[]
C_Cpp.default.browse.defines : string[]
C_Cpp.default.browse.dotConfig : string
C_Cpp.default.browse.databaseFilename : string
C_Cpp.default.browse.limitSymbolsToIncludedHeaders : boolean
这些设置具有 VS Code 设置的所有优点,这意味着它们可以具有默认值、“用户”、“工作区”和“文件夹”值。因此,您可以在“用户”设置中设置全局值C_Cpp.default.cppStandard
,并将其应用于您打开的所有文件夹。如果任何一个文件夹需要不同的值,您可以通过添加“文件夹”或“工作区”值来覆盖该值。
VS Code 设置的此属性允许您独立配置每个工作区 - 使文件成为c_cpp_properties.json
可选的。
更新c_cpp_properties.json
语法
已将特殊变量添加到可接受的语法中,c_cpp_properties.json
该变量将指示扩展插入上述 VS Code 设置中的值。如果将任何设置的值设置为c_cpp_properties.json
“${default}”,它将指示扩展读取该属性的 VS Code 默认设置并将其插入。例如:
"configurations": [
{
"name": "Win32",
"includePath": [
"additional/paths",
"${default}"
],
"defines": [
"${default}"
],
"macFrameworkPath": [
"${default}",
"additional/paths"
],
"forcedInclude": [
"${default}",
"additional/paths"
],
"compileCommands": "${default}",
"browse": {
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "${default}",
"path": [
"${default}",
"additional/paths"
]
},
"intelliSenseMode": "${default}",
"cStandard": "${default}",
"cppStandard": "${default}",
"compilerPath": "${default}"
}
],
请注意,对于接受 string[] 的属性,上面建议的语法允许您使用其他值来扩充 VS Code 设置,从而允许您在 VS Code 设置中列出通用路径,并在c_cpp_properties.json
.
如果 中缺少某个属性c_cpp_properties.json
,则扩展将使用 VS Code 设置中的值。如果开发人员为适用于给定文件夹的所有设置分配值,则c_cpp_properties.json
可以将其从 .vscode 文件夹中删除,因为不再需要它。
有关 c_cpp_properties.json 设置文件的深入信息,请参阅c_cpp_properties.json 参考。
系统包括
将添加一个新设置,允许您指定与文件夹的包含路径分开的系统包含路径。如果此设置有值,则扩展从设置中指定的编译器获取的系统包含路径compilerPath
将不会添加到扩展用于 IntelliSense 的路径数组中。我们可能希望提供一个 VS Code 命令,以便有兴趣使用它的用户从编译器的默认值填充此值,以防他们想要对默认值进行一些修改。
C_Cpp.default.systemIncludePath : string[]
系统包括路径/定义解析策略
扩展确定系统 includePath 并定义以以下方式发送到 IntelliSense 引擎:
-
如果
compileCommands
具有有效值并且在编辑器中打开的文件位于数据库中,则使用数据库条目中的编译命令来确定包含路径和定义。- 系统包含路径和定义是使用以下逻辑(按顺序)确定的:
- 如果
systemIncludePath
有值,请使用它(继续下一步搜索系统定义)。 - 如果
compilerPath
有效,则查询。 - 将命令中的第一个参数解释为编译器并尝试查询它。
- 如果
compilerPath
是“”,则使用空数组作为系统包含路径并定义。 - 如果
compilerPath
未定义,则在系统上查找编译器并查询它。
- 如果
- 系统包含路径和定义是使用以下逻辑(按顺序)确定的:
-
如果
compileCommands
无效或当前文件未在数据库中列出,请使用IntelliSense 配置中的includePath
和属性。defines
- 系统包含路径和定义是使用以下逻辑(按顺序)确定的:
- 如果
systemIncludePath
有值,请使用它(继续下一步搜索系统定义)。 - 如果
compilerPath
有效,则查询。 - 如果
compilerPath
是“”,则对系统包含路径和定义使用空数组(假定它们已经在当前配置中)includePath
。defines
- 如果
compilerPath
未定义,则在系统上查找编译器并查询它。
- 如果
- 系统包含路径和定义是使用以下逻辑(按顺序)确定的:
系统包含不应添加到includePath
或browse.path
变量中。如果扩展检测到includePath
属性中的任何系统包含路径,它将默默地删除它们,以便确保系统包含路径最后添加并按正确的顺序添加(这对于 GCC/Clang 尤其重要)。
增强的语义着色
启用 IntelliSense 后,Visual Studio Code C/C++ 扩展支持语义着色。有关为类、函数、变量等设置颜色的更多详细信息,请参阅增强着色。
扩展日志记录
如果您遇到扩展程序问题,而我们无法根据您的问题报告中的信息进行诊断,我们可能会要求您启用日志记录并向我们发送您的日志。有关如何收集日志的信息,请参阅C/C++ 扩展日志记录。