• 0

  • 504

  • 收藏

如何使用vscode开发C语言

4个月前

目的

为了学习被我遗忘掉的C语言,为了能够学习linux内核,为了能够深入学习JVM

开始

首先我使用的是gcc on windows编译器,vscode官方已经总结出了helloworld教程,这里是链接

安装环境

  1. 安装C/C++插件
  2. 下载mingw-w64编译器并解压。由于官网online下载区巨他喵慢,所以选择下载离线包,这里是下载链接。下载完成后直接解压文件,将bin目录添加到环境变量
  3. 命令行验证:

配置HelloWorld程序的运行

  1. 首先使用vscode打开项目根目录,我在我的常用项目目录里创建了hello-c-projects作为我的根目录
  2. 这个根目录将会作为vscode的工作空间,在编译、调试、启动的过程中vscode会生成一个.vscode文件夹,用于放置生成的环境配置文件
  3. 写一个hello.c
    #include <stdio.h>
    int main()
    {
      printf("Hello C Programming !");
    }
    复制代码
  4. 可以使用Ctrl + Shift + E快速在左侧File Explorer定位当前编辑的文件
  5. IntelliSense插件使得vscode能够提供c/c++的智能语法提示
  6. 现在开始编译这个hello.c源文件。顶部栏>终端>配置默认生成任务,点击以后会看到唯一的gcc.exe选项,直接点击就好了(如果编译的文件是.cpp,那么会看到三个选项,由于我当前学习的是.c,也就是c程序,并不包含c++,所以只有一个默认的gcc.exe。这里简单介绍了gcc与g++的一些区别)。此时.vscode/task.json文件就生成了:
    {
      "version": "2.0.0",
      "tasks": [
        {
          "type": "cppbuild",
          "label": "C/C++: gcc.exe build active file",
             
          // 指定了要运行的程序;这里当然是gcc.exe
          "command": "D:\\packages\\c_cpp\\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\\mingw64\\bin\\gcc.exe",
             
          // 指定了要传给gcc的命令行参数
          // 执行时的完整命令在这里就是:
          //   `gcc -g D:\hello-c-projects\helloworld\hello.c -o D:\hello-c-projects\helloworld\hello.exe`
          "args": [
            "-g",
            "${file}",
            "-o",
            "${fileDirname}\\${fileBasenameNoExtension}.exe" // vscode中默认生成为.exe可执行文件,非常方便启动
          ],
          "options": {
            "cwd": "D:\\packages\\c_cpp\\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\\mingw64\\bin"
          },
          "problemMatcher": ["$gcc"],
          "group": {
            "kind": "build",
            "isDefault": true // 配置为true时,ctrl+shift+b将默认直接执行此任务
          },
          "detail": "compiler: D:\\packages\\c_cpp\\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\\mingw64\\bin\\gcc.exe"
        }
      ]
    }
    
    复制代码
    对于tasks.json配置文件中的各种变量,vscode官方有一个文档来详细说明。这里大致列一下一些变量的含义:
    • ${workspaceFolder} - the path of the folder opened in VS Code - vscode打开的文件夹绝对路径
    • ${workspaceFolderBasename} - the name of the folder opened in VS Code without any slashes (/) - vscode打开的文件夹名
    • ${file} - the current opened file - 当前打开的文件绝对路径
    • ${relativeFile} - the current opened file relative to workspaceFolder - 当前打开的文件相对于工作空间的相对路径
    • ${relativeFileDirname} - the current opened file's dirname relative to workspaceFolder - 相对路径的文件夹名
    • ${fileBasename} - the current opened file's basename - 当前打开的文件名
    • ${fileBasenameNoExtension} - the current opened file's basename with no file extension - 当前打开的文件名,无后缀
    • ${fileDirname} - the current opened file's dirname - 当前打开的文件的文件夹的绝对路径
    • ${fileExtname} - the current opened file's extension - 文件后缀
    • ${cwd} - the task runner's current working directory on startup - 启动时任务运行程序的当前工作目录
    • ${lineNumber} - the current selected line number in the active file - 活动文件中当前选择的行号
    • ${selectedText} - the current selected text in the active file - 活动文件中当前选定的文本
    • ${execPath} - the path to the running VS Code executable - VS Code可执行文件的路径(Code.exe的位置)
    • ${defaultBuildTask} - the name of the default build task - 默认构建任务的名称
  7. 无需修改配置文件,选中hello.c文件后,快捷键Ctrl + Shift + B便会直接运行默认配置的task,一个hello.exe可执行文件就被编译出来了。如果不调试而直接启动的话,命令行直接运行该文件即可;win10资源管理器打开双击也可以执行(只不过对于这个程序而言,命令行会一闪而过而已~)。
  8. * 编译多文件。win10平台下的mingw-w64提供了mingw32-make.exe这个可执行make文件,通过编写makefile可以实现多文件编译。暂时就不讨论这个了,涉及到gcc、cmake,咱现在也不会,慢慢来
  9. 调试单个文件。需要在.vscode文件夹中创建一个launch.json文件用来支持F5调试的能力。顶部栏>运行>添加配置>C++(GDB/LLDB)>选择task。这里建议把tasks.json中自己配置的label与description修改一下,以便区分系统提供的默认task。
  10. 关于launch.json中各个字段的说明,懒得说了。这里是文档,标注好了锚点直接点开看。
  11. 调试时的界面和其他ide差不多,一眼就能看明白。左侧栏有一个「监视」的功能,可以输入表达式来监视程序运行过程中一些变量的变化,具体看这里
  12. c/c++的配置文件:该文件的创建方式为:[Ctrl + Shift + P]打开命令面板 > 编辑:C/C++: 编辑配置(JSON)(讲真,能直接输入中文来启动命令真的很友好)。该操作将会生成一个默认的c_cpp_properties.json配置文件,放置于.vscode文件夹下。这里是我的电脑上生成的结果:
    {
      "configurations": [
        {
          "name": "Win32",
          "includePath": ["${workspaceFolder}/**"],
          "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
          "compilerPath": "D:\\packages\\c_cpp\\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\\mingw64\\bin\\gcc.exe",
          "cStandard": "gnu17",
          "cppStandard": "gnu++14",
          "intelliSenseMode": "gcc-x64"
        }
      ],
      "version": 4
    }
    复制代码
    鼠标放到某一个键上就可以看到注解,很方便。这个文件中所有项的配置都是为了让IntelliSense能提供更友好的智能感知。对于使用者而言,你需要修改的只有includePath这一项(当你的头文件不处于当前工作空间时)。关于这个配置文件的更多项说明,请看这里

现在就可以开始学习C语言了,学习的过程中自然也会接触到更多的gcc、cmake、vscode的使用方式,唯一需要的就是更多的时间投入。

免责声明:文章版权归原作者所有,其内容与观点不代表Unitimes立场,亦不构成任何投资意见或建议。

程序员

504

相关文章推荐

未登录头像

暂无评论