目的
为了学习被我遗忘掉的C语言,为了能够学习linux内核,为了能够深入学习JVM
开始
首先我使用的是gcc on windows编译器,vscode官方已经总结出了helloworld教程,这里是链接
安装环境
配置HelloWorld程序的运行
- 首先使用vscode打开项目根目录,我在我的常用项目目录里创建了hello-c-projects作为我的根目录
- 这个根目录将会作为vscode的工作空间,在编译、调试、启动的过程中vscode会生成一个
.vscode文件夹,用于放置生成的环境配置文件 - 写一个hello.c
#include <stdio.h> int main() { printf("Hello C Programming !"); } 复制代码 - 可以使用
Ctrl + Shift + E快速在左侧File Explorer定位当前编辑的文件 - IntelliSense插件使得vscode能够提供c/c++的智能语法提示
- 现在开始编译这个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 - 默认构建任务的名称
- 无需修改配置文件,选中hello.c文件后,快捷键
Ctrl + Shift + B便会直接运行默认配置的task,一个hello.exe可执行文件就被编译出来了。如果不调试而直接启动的话,命令行直接运行该文件即可;win10资源管理器打开双击也可以执行(只不过对于这个程序而言,命令行会一闪而过而已~)。 - * 编译多文件。win10平台下的mingw-w64提供了mingw32-make.exe这个可执行make文件,通过编写makefile可以实现多文件编译。暂时就不讨论这个了,涉及到gcc、cmake,咱现在也不会,慢慢来
- 调试单个文件。需要在.vscode文件夹中创建一个launch.json文件用来支持F5调试的能力。顶部栏>运行>添加配置>C++(GDB/LLDB)>选择task。这里建议把tasks.json中自己配置的label与description修改一下,以便区分系统提供的默认task。
- 关于launch.json中各个字段的说明,懒得说了。这里是文档,标注好了锚点直接点开看。
- 调试时的界面和其他ide差不多,一眼就能看明白。左侧栏有一个「监视」的功能,可以输入表达式来监视程序运行过程中一些变量的变化,具体看这里
- 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的使用方式,唯一需要的就是更多的时间投入。




近期评论