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

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

有一天我在打题的时候,使用了这种方式来初始化一个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"
      }
  ]
}

您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

### 配置 VSCode 编译 C++17 #### 安装必要的软件和工具 为了能够在 Windows 上使用 VSCode 编译 C++17 代码,首先需要安装合适的编译器和支持工具。推荐使用 MinGW-w64 或者 Microsoft 的 Visual Studio Build Tools 中的 MSVC 编译器。 对于 MinGW-w64 用户,在安装过程中应确保选择了支持 C++17 版本的标准库[^1]。 #### 插件安装 在 VSCode 内部需安装一系列辅助插件来增强体验: - **C/C++**: 提供 IntelliSense 和其他功能的支持。 - **Better C++ Syntax**: 改善语法高亮效果。 - **CMake** 及 **CMake Tools**: 如果计划采用 CMake 构建系统的话。 - **Code Runner**: 方便快速执行单个文件而不必设置完整的构建任务[^2]。 #### 设置 `tasks.json` 文件 为了让 VSCode 正确调用 g++ 来编译 C++17 代码,可以在工作区根目录下的 `.vscode/tasks.json` 添加如下配置项: ```json { "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "g++", "args": [ "-std=c++17", // 使用 c++17 标准 "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe", "${file}" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "Generated task to build a single cpp file using gcc" } ] } ``` 这段 JSON 代码定义了一个名为 “build hello world” 的任务,它会告诉 VSCode 如何通过命令行参数 `-std=c++17` 将当前打开的 .cpp 文件按照 C++17 标准进行编译,并生成对应的可执行文件[^3]。 #### 修改 launch.json 进行调试 如果希望能在 VSCode 下直接启动并调试程序,则还需要调整 `.vscode/launch.json` 文件的内容以便于集成 GDB/Lldb 调试器: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/hello.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "/path/to/gdb", // 替换成实际路径 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build hello world", "internalConsoleOptions": "openOnSessionStart" } ] } ``` 这里的关键在于 `"preLaunchTask"` 字段指定了先运行前面提到的任务完成编译之后再开始调试过程;同时也要注意修改 `"miDebuggerPath"` 为你本地 GDB 的绝对路径[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值