自定义默认设置
你可以覆盖在c_cpp_properties.json
中设置的属性的默认值。
Visual Studio Code 设置
以下 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}"
}
],
请注意,对于接受字符串数组的属性,上述语法允许您使用额外的值来增强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
有一个有效的值,并且编辑器中打开的文件在数据库中,则使用数据库条目中的编译命令来确定包含路径和定义。- The system include path and defines are determined using the following logic (in order):
- If
systemIncludePath
has a value, use it (continue to the next step to search for system defines). - If
compilerPath
is valid, query it. - Interpret the first argument in the command as the compiler and attempt to query it.
- If
compilerPath
is "", use an empty array for system include path and defines. - If
compilerPath
is undefined, look for a compiler on the system and query it.
- If
- The system include path and defines are determined using the following logic (in order):
-
如果
compileCommands
无效或当前文件未列在数据库中,请使用配置中的includePath
和defines
属性进行IntelliSense。- The system include path and defines are determined using the following logic (in order):
- If
systemIncludePath
has a value, use it (continue to the next step to search for system defines). - If
compilerPath
is valid, query it. - If
compilerPath
is "", use an empty array for system include path and defines (they are assumed to be in theincludePath
anddefines
for the current config already). - If
compilerPath
is undefined, look for a compiler on the system and query it.
- If
- The system include path and defines are determined using the following logic (in order):
系统包含路径不应添加到includePath
或browse.path
变量中。如果扩展检测到includePath
属性中有任何系统包含路径,它将静默删除它们,以确保系统包含路径最后以正确的顺序添加(这对于GCC/Clang尤其重要)。
增强的语义着色
当启用IntelliSense时,Visual Studio Code的C/C++扩展支持语义着色。有关为类、函数、变量等设置颜色的更多详细信息,请参见增强着色。
扩展日志记录
如果您遇到的问题我们无法根据您的问题报告中的信息进行诊断,我们可能会要求您启用日志记录并发送日志给我们。有关如何收集日志的信息,请参见C/C++扩展日志记录。