vscode 工程中 c_cpp_properties.json文件作用

打印 上一主题 下一主题

主题 877|帖子 877|积分 2631

在 Visual Studio Code(VSCode)开辟C或C++项目时,c_cpp_properties.json 文件是一个非常重要的配置文件,重要由微软提供的 C/C++ 扩展(C/C++ extension from Microsoft)使用。它重要用于配置 IntelliSense(代码自动补全)、代码分析、调试等功能。以下是该文件的作用及其各部分的详细说明。
1. 文件位置

通常,c_cpp_properties.json 文件位于 .vscode 目录中,即:
  1. .vscode/
  2. ├── c_cpp_properties.json
  3. └── ...
复制代码
2. 重要作用



  • 配置 IntelliSense:设置编译器路径、头文件搜索路径等信息,使得 VSCode 能够提供高效的代码补全、代码跳转等功能。
  • 配置编译器:指定编译器类型和版本,确保代码分析和调试信息与实际编译器一致。
  • 配置调试和运行情况:为不同的操作体系和情况(如 Windows、Linux、macOS)定制不同的编译和运行配置。
3. 配置文件布局

c_cpp_properties.json 文件布局通常如下:
  1. {
  2.     "configurations": [
  3.         {
  4.             "name": "Win32",
  5.             "includePath": [
  6.                 "${workspaceFolder}/**"
  7.             ],
  8.             "defines": [
  9.                 "_DEBUG",
  10.                 "UNICODE"
  11.             ],
  12.             "compilerPath": "C:/path/to/gcc.exe",
  13.             "cStandard": "c11",
  14.             "cppStandard": "c++17",
  15.             "intelliSenseMode": "gcc-x64"
  16.         }
  17.     ],
  18.     "version": 4
  19. }
复制代码
接下来是对每个配置项的详细说明:
4. 配置项说明



  • configurations:这是一个配置数组,你可以为不同的平台和情况定义多个配置。

    • name:配置的名称,比方 Win32, Linux, Mac, Custom 等,方便区分和选择。
    • includePath:头文件搜索路径。在剖析代码时,VSCode 会在这些路径中搜索头文件。支持使用占位符和情况变量,如 ${workspaceFolder} 表现当前工作区的根目录,或 ${workspaceFolder}/** 表现递归包含所有子目录。
    • defines:定义预处理器宏。比方 _DEBUG, UNICODE, MY_DEFINE=1 等,模仿编译器预定义宏。
    • compilerPath:指定C/C++编译器的路径,VSCode将使用它来获取编译器相关信息。比方,C:/MinGW/bin/gcc.exe 或 /usr/bin/gcc。
    • cStandard:设置C尺度,支持的值有 c89, c99, c11, gnu11 等。
    • cppStandard:设置C++尺度,支持的值有 c++98, c++11, c++14, c++17, c++20,gnu++11,gnu++17 等。
    • intelliSenseMode:设置 IntelliSense 模式,通常根据编译器和架构选择,常见值包罗 gcc-x64, gcc-arm64, msvc-x64, clang-x64, clang-arm64。

5. 示例配置

示例 1:Windows 情况的配置

  1. {
  2.     "configurations": [
  3.         {
  4.             "name": "Win32",
  5.             "includePath": [
  6.                 "${workspaceFolder}/include",
  7.                 "C:/path/to/external/libs/include"
  8.             ],
  9.             "defines": [
  10.                 "_DEBUG",
  11.                 "UNICODE",
  12.                 "_UNICODE"
  13.             ],
  14.             "compilerPath": "C:/MinGW/bin/gcc.exe",
  15.             "cStandard": "c11",
  16.             "cppStandard": "c++17",
  17.             "intelliSenseMode": "gcc-x64",
  18.             "browse": {
  19.                 "path": [
  20.                     "${workspaceFolder}/src",
  21.                     "${workspaceFolder}/include",
  22.                     "C:/path/to/external/libs/src"
  23.                 ],
  24.                 "limitSymbolsToIncludedHeaders": true,
  25.                 "databaseFilename": ""
  26.             }
  27.         }
  28.     ],
  29.     "version": 4
  30. }
复制代码
示例 2:Linux 情况的配置

  1. {
  2.     "configurations": [
  3.         {
  4.             "name": "Linux",
  5.             "includePath": [
  6.                 "${workspaceFolder}/include",
  7.                 "/usr/include",
  8.                 "/usr/local/include"
  9.             ],
  10.             "defines": [],
  11.             "compilerPath": "/usr/bin/gcc",
  12.             "cStandard": "gnu11",
  13.             "cppStandard": "gnu++17",
  14.             "intelliSenseMode": "gcc-x64",
  15.             "browse": {
  16.                 "path": [
  17.                     "${workspaceFolder}/src",
  18.                     "${workspaceFolder}/include",
  19.                     "/usr/include",
  20.                     "/usr/local/include"
  21.                 ],
  22.                 "limitSymbolsToIncludedHeaders": true,
  23.                 "databaseFilename": ""
  24.             }
  25.         }
  26.     ],
  27.     "version": 4
  28. }
复制代码
6. 配置多个情况

你还可以为多个情况设置不同的配置,并在 VSCode 中自由切换。比方:
  1. {
  2.     "configurations": [
  3.         {
  4.             "name": "Win32",
  5.             "includePath": ["${workspaceFolder}/**"],
  6.             "defines": ["_DEBUG", "UNICODE"],
  7.             "compilerPath": "C:/MinGW/bin/gcc.exe",
  8.             "cStandard": "c11",
  9.             "cppStandard": "c++17",
  10.             "intelliSenseMode": "gcc-x64"
  11.         },
  12.         {
  13.             "name": "Linux",
  14.             "includePath": ["${workspaceFolder}/**", "/usr/include"],
  15.             "defines": [],
  16.             "compilerPath": "/usr/bin/gcc",
  17.             "cStandard": "gnu11",
  18.             "cppStandard": "gnu++17",
  19.             "intelliSenseMode": "gcc-x64"
  20.         }
  21.     ],
  22.     "version": 4
  23. }
复制代码
7. 总结

c_cpp_properties.json 文件在 VSCode 中对 C/C++ 项目开辟起着至关重要的作用,通过配置该文件,你可以:


  • 提供更好的代码补全和代码分析功能。
  • 指定使用的编译器及其版本。
  • 设置头文件搜索路径和预处理器宏定义。
  • 为不同的开辟平台定制不同的配置。
合理配置 c_cpp_properties.json 文件,有助于提高开辟效率和代码质量。希望以上说明对你明确和使用该文件有所帮助。


8. 关于IntelliSense 模式的使用说明

在 Visual Studio Code(VSCode)中,IntelliSense 是微软为开辟者提供的一组丰富的代码辅助功能,包罗代码自动补全、参数信息、快速信息和代码片段等。这些功能有助于提高开辟效率,减少错误,并使代码更具可读性。
        8.1. IntelliSense 模式

在 c_cpp_properties.json 中,intelliSenseMode 属性用于指定 IntelliSense 的工作模式。这一属性告诉 VSCode 使用哪种编译器和架构来剖析和明确代码,以提供更加准确的代码补全、错误陈诉及其他辅助功能。
        8.2. 支持的 IntelliSense 模式

IntelliSense 模式通常与编译器和目的体系布局相关联。以下是一些常见的 IntelliSense 模式及其寄义:


  • msvc-x64:表现使用 Microsoft Visual C++ 编译器(MSVC)进行 64 位架构的剖析。
  • msvc-x86:表现使用 MSVC 进行 32 位架构的剖析。
  • gcc-x64:表现使用 GNU 编译器集合(GCC)进行 64 位架构的剖析。
  • gcc-x86:表现使用 GCC 进行 32 位架构的剖析。
  • clang-x64:表现使用 Clang 编译器进行 64 位架构的剖析。
  • clang-x86:表现使用 Clang 进行 32 位架构的剖析。
  • gcc-arm:表现使用 GCC 进行 ARM 架构的剖析。
  • clang-arm:表现使用 Clang 进行 ARM 架构的剖析。
        8.3. 如何选择 IntelliSense 模式

选择 IntelliSense 模式时,重要考虑以下几个因素:

  • 编译器类型:你实际使用的编译器是哪个?MSVC、GCC 照旧 Clang?
  • 目的架构:你的目的操作体系和处理器架构是什么?x86、x64 照旧 ARM?
  • 兼容性:为了确保 IntelliSense 的剖析方式与编译器的剖析方式一致,选择与你的编译器和目的架构匹配的模式。
        8.4. 示例配置

示例 1:Windows 上使用 MSVC 编译器进行 64 位开辟

  1. {
  2.     "configurations": [
  3.         {
  4.             "name": "Win32",
  5.             "includePath": [
  6.                 "${workspaceFolder}/**"
  7.             ],
  8.             "defines": [
  9.                 "_DEBUG",
  10.                 "UNICODE"
  11.             ],
  12.             "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe",
  13.             "cStandard": "c11",
  14.             "cppStandard": "c++17",
  15.             "intelliSenseMode": "msvc-x64"
  16.         }
  17.     ],
  18.     "version": 4
  19. }
复制代码
示例 2:Linux 上使用 GCC 编译器进行 64 位开辟

  1. {
  2.     "configurations": [
  3.         {
  4.             "name": "Linux",
  5.             "includePath": [
  6.                 "${workspaceFolder}/include",
  7.                 "/usr/include",
  8.                 "/usr/local/include"
  9.             ],
  10.             "defines": [],
  11.             "compilerPath": "/usr/bin/gcc",
  12.             "cStandard": "gnu11",
  13.             "cppStandard": "gnu++17",
  14.             "intelliSenseMode": "gcc-x64"
  15.         }
  16.     ],
  17.     "version": 4
  18. }
复制代码
        8.5. 调解 IntelliSense 弹出提示

假如 IntelliSense 的提示信息与你预期不符,可以通过调解 c_cpp_properties.json 中的配置项来进行优化:


  • 确保 includePath 是正确的。
  • 确保 defines 中包含了所有须要的预处理宏。
  • 设置正确的 compilerPath。
  • 选择正确的 intelliSenseMode。
        总结

IntelliSense 模式 是 VSCode 中一个重要的配置项,它决定了代码补全、错误陈诉等辅助功能的工作方式。通过合理配置 IntelliSense 模式,你可以得到更精准的代码提示和错误查抄,从而提拔开辟效率和代码质量。
        另外,假如还必要进一步的调校和优化 IntelliSense 功能,官方的 C/C++ 扩展文档 是一个很好的参考资源。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

伤心客

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表