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

vscode关于CC++编译运行的一些小配置,第1张

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

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

文章目录
  • vscode关于C/C++编译运行的一些小配置
    • 0、小贴士
    • 1、添加命令行参数
    • 2、调试单个或多个cpp文件
    • 3、我的`.vscode` 配置
    • 4、c/c++的代码格式化
    • 5、清除所有的 `.exe` 文件

0、小贴士

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

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

1、添加命令行参数

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

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


  • 示例代码和图片
    • 代码

      #include 
      
      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 
      
      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 
      
      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 文件。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/563006.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存