vscode 采用C++17版本进行编译

本文介绍了如何解决C++98版本中无法使用花括号初始化vector的问题,并提供了两种更新编译器设置的方法:通过CodeRunner插件或修改tasks.json文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一天我在打题的时候,使用了这种方式来初始化一个vector

vector<int> nums = {-4,-1,0,3,10};

编译器马上很快就执行了编译命令

if ($?) { g++ day2_1.cpp -o day2_1 } ; if ($?) { .\day2_1 }

并且也很快的报了错(寄了)

day2_1.cpp: In function 'int main()':
day2_1.cpp:17:37: error: in C++98 'nums' must be initialized by constructor, not by '{...}'
     vector<int> nums = {-4,-1,0,3,10};

很明显这是因为我的编译命令采用的C++版本不支持这种vector初始化的方式
所以我们需要修改编译选项

但是vscode这个高级记事本修改起来还挺麻烦的,所以在此记录一下

Code Runner

在vscode里,我一般使用codeRunner这个插件来对代码进行编译运行,所以我这里的修改版本是在Code Runner上修改的

我们直接进入vscode,在我们.vsode文件夹下,修改setting.json文件,加入一条设置

 "code-runner.executorMap": {
        "cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        }

在这里插入图片描述
修改保存完之后,我们再次编译这个文件,可以发现命令行里的编译命令变成如下所示了

if ($?) { g++ -std=c++17 day2_1.cpp -o day2_1 } ; if ($?) { .\day2_1 }

good,这样我们的代码就能正确的编译运行了

不用Code Runner

有些hxd不喜欢用Code Runner,那也行,只用在.vscode下的tasks.json文件中,设置一下编译选项即可
在这里插入图片描述
我的tasks.json长这样

{
  "version": "2.0.0",
  "tasks": [
      {
          "type": "shell",
          "label": "task g++",    //修改此项
          //"command": "D:\\2Software\\mingw64\\bin\\g++.exe",
          "command": "C:\\Mingw64\\mingw64\\bin\\g++.exe",
          "args": [
              "-g",
              "${file}",
              "-o",
              "${fileDirname}\\${fileBasenameNoExtension}.exe",
              "-std=c++17"
          ],
          "options": {
              "cwd": "C:\\Mingw64\\mingw64\\bin"
          },
          "problemMatcher": [
              "$gcc"
          ],
          "group": "build"
      }
  ]
}
### 如何在 Visual Studio Code 中设置 C++17 编译选项和 IntelliSense 配置 为了使 Visual Studio Code 支持 C++17编译以及提供相应的 IntelliSense 功能,需完成几个关键配置。 #### 安装必要的扩展 确保已安装 Microsoft 提供的官方 C/C++ 扩展包。这可以通过 VSCode 内部市场直接获取[^3]。 #### 修改 `tasks.json` 文件以启用 C++17 标准 对于 GCC 或 Clang 编译器而言,在 `.vscode/tasks.json` 文件中的相应位置加入 `-std=c++17` 参数可以指定采用 C++17 版本标准进行编译: ```json { "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "/usr/bin/g++", // 如果使用的是Clang,则替换为clang++ "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-std=c++17" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "Generated task to build a single file." } ] } ``` 上述 JSON 对象定义了一个名为 `"build hello world"` 的任务,其中包含了用于激活 C++17 模式的命令行参数 `-std=c++17`[^4]。 #### 更新 `c_cpp_properties.json` 来调整 IntelliSense 设置 为了让 IntelliSense 正确解析代码并理解所使用的 C++17 新特性,还需要修改位于项目根目录下的 `.vscode/c_cpp_properties.json` 文件内的 compilerPath 和 intelliSenseMode 字段,并添加 cStandard 及 cppStandard 属性来指明期望的标准版本: ```json { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**" ], "defines": [], "compilerPath": "/usr/bin/gcc", // 若使用 clang 则改为 /usr/bin/clang "cStandard": "gnu11", "cppStandard": "c++17", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 } ``` 这里特别注意 `"cppStandard": "c++17"` 这一行,它告诉 IntelliSense 使用 C++17 语法来进行自动补全和其他智能提示操作[^1]。 通过以上步骤即可实现在 Visual Studio Code 下对 C++17 的全面支持,从而享受更现代的语言特性和开发体验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值