vscode关于C/C++编译运行的一些小配置

vscode关于C/C++编译运行的一些小配置

Author: mikudouble
Created Time: March 31, 2022 4:24 PM
Significance: ⭐⭐⭐

0、小贴士

💡 以下配置都是在Windows10下的,其他平台不一定有效

💡 用vscode写C/C++的时候,文件夹名称不要用中文,文件夹所在的路径也不要有中文

1、添加命令行参数

如果你的程序需要命令行参数,那么可以采用这种方式:

  1. 打开 .vscode 文件夹内的 launch.json 文件;
  2. "args": [], 内添加需要传递给程序的命令行参数;
  3. 在不需要参数的时候可以将 "args": [], 清空。
  • 示例代码和图片
    • 代码

      #include <iostream>
      
      using namespace std;
      
      int main(int argc, char *argv[])
      {
          if (argc < 3)
          {
              cout << "We need three arguments" << endl;
              return -1;
          }
      
          cout << (atof(argv[1]) + atof(argv[2])) << endl;
      
          return 0;
      }
      
    • 原本的 launch.json

      在这里插入图片描述

    • 修改后的 launch.json
      添加传递给程序的命令行参数

      在这里插入图片描述

    • 程序运行结果

      在这里插入图片描述

2、调试单个或多个cpp文件

vscode的C/C++插件默认情况下只能编译调试一个cpp文件。当加上一个自己写的头文件的时候,如果头文件没有对应的源文件时,即头文件中的函数定义没有分离到另一个.cpp源文件的时候,vscode也一样可以编译调试。但是当我们将头文件中的函数分离到另一个.cpp的时候,vscode就不能再编译调试了。

按照以下方式修改配置tasks.json文件,可以解决上述问题。

  1. 打开 .vscode 文件夹内的 tasks.json
  2. "args": [], 内将 "${file}", 注释掉,并添加一行 "${fileDirname}\\*.cpp",
  3. 如果你的 tasks.json 文件内有两个 "args": [], ,那么一个对应的运行【快捷键ctrl + F5】或调试【快捷键F5】的配置,一个对应的是只编译不运行【快捷键ctrl + shift + B】的配置,修改对应的那个就可以了。如果你不知道哪个对应哪个,那就都改吧。

上面的方法中,原本的 "${file}", 是指当前文件,而 "${fileDirname}\\*.cpp", 是指当前文件夹下的所有 .cpp 文件。

如果你想只运行或调试当前文件,而不想影响到同文件夹下的其他 .cpp 文件,那么就只能用 "${file}", ;如果你需要运行多个cpp文件,准确的说应该是当前文件夹下的所有 .cpp ,就用 "${fileDirname}\\*.cpp", ,这就类似于一个项目文件夹,此时如果想运行一个新的c++代码,就要新建一个文件夹。

  • 示例代码和图片
    • 代码结构

      在这里插入图片描述

    • main.cpp

      #include "../head/myfunc.h"
      #include <iostream>
      
      using namespace std;
      
      int main()
      {
          int m[] = {2, 4, 6, 8, 0, 1, 3, 5, 7, 9};
          print(m, 10);
          return 0;
      }
      
    • myfunc.h

      #ifndef __MYFUNC_H_
      #define __MYFUNC_H_
      
      void print(int *arr, int size);
      
      #endif // !__MYFUNC_H_
      
    • myfunc.cpp

      #include "../head/myfunc.h"
      #include <iostream>
      
      using namespace std;
      
      void print(int *arr, int size)
      {
          for (int i = 0; i != size; ++i)
          {
              cout << arr[i] << endl;
          }
      }
      

3、我的.vscode 配置

  • launch.json

    {
        // 使用 IntelliSense 了解相关属性。 
        // 悬停以查看现有属性的描述。
        // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "g++.exe - 生成和调试活动文件",
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "args": [],  // 这里可以添加main函数所需要的命令行参数,记得每个参数都加上""
                "stopAtEntry": false,
                "cwd": "${fileDirname}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                "miDebuggerPath": "D:\\bc\\environment\\Mingw\\MinGW\\bin\\gdb.exe",
                "setupCommands": [
                    {
                        "description": "为 gdb 启用整齐打印",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    },
                    {
                        "description": "将反汇编风格设置为 Intel",
                        "text": "-gdb-set disassembly-flavor intel",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "C/C++: g++.exe 生成活动文件"
            }
        ]
    }
    
  • tasks.json

    {
        "tasks": [
            {  // 运行【ctrl+F5】或调试【F5】对应的配置
                "type": "cppbuild",
                "label": "C/C++: g++.exe 生成活动文件",
                "command": "D:\\bc\\environment\\Mingw\\MinGW\\bin\\g++.exe",
                "args": [
                    "-fdiagnostics-color=always",
                    "-g",
                    // "${file}",  // 只运行或调试当前文件
                    "${fileDirname}\\*.cpp",  // 运行或调试当前文件夹下的所有文件
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe"
                ],
                "options": {
                    "cwd": "${fileDirname}"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": "build",
                "detail": "调试器生成的任务。"
            },
            {  // 只编译不运行命令【ctrl+shift+B】的配置
                "type": "cppbuild",
                "label": "C/C++: g++.exe 生成活动文件 ver(1)",
                "command": "D:\\bc\\environment\\Mingw\\MinGW\\bin\\g++.exe",
                "args": [
                    "-fdiagnostics-color=always",
                    "-g",
                    // "${file}",  // 只编译当前文件
                    "${fileDirname}\\*.cpp",  // 编译当前文件夹下的所有文件
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe"
                ],
                "options": {
                    "cwd": "${fileDirname}"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "detail": "调试器生成的任务。"
            }
        ],
        "version": "2.0.0"
    }
    
  • settings.json 我感觉没什么用,就不贴了

4、c/c++的代码格式化

在设置那里,找到 C_Cpp: Clang_format_style 【可以直接搜索】,里面可以选择各种样式,也可以自己配置。

我常用的就两种:

  1. Visual Studio
  2. { BasedOnStyle: Chromium, IndentWidth: 4, ReflowComments: false, AccessModifierOffset: -4, PointerAlignment: Right, AllowShortFunctionsOnASingleLine: Empty }

其中,IndentWidth: 4 表示缩进4位,ReflowComments: false 表示不允许重新排版注释,AccessModifierOffset: -4 表示访问说明符(public、private等)的偏移为-4,PointerAlignment: Right 表示指针和引用的对齐方式(Left、Right、Middle)为右对齐,AllowShortFunctionsOnASingleLine: Empty 允许短的函数放在同一行:None,InlineOnly(定义在类中),Empty(空函数),Inline(定义在类、空函数中),All。

相关的推荐文章:VS Code C++ 代码格式化方法(clang-format)

5、清除所有的 .exe 文件

在工作区文件夹下新建一个 clean_exe.bat 文件,并写入如下内容:

del /a /s /f /q  *.exe

在命令行运行该文件,即可清除当前文件夹及其子文件夹下的所有的 .exe 文件。

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值