前言:本文将教大家如何使用 VIsual Studio Code 搭建 C 语言开发环境,包括使用 VS Code 如何编译和调试 C 语言程序,需要 用到的工具有 Visual Studio Code 、MinGw-w64 。

1. 安装 C/C++ 插件

C/C++ 是由 Microsoft 发布的支持 C/C++ 智能提示和调试等功能的插件,安装步骤如下:

使用快捷键Ctrl + Shift + X呼出扩展面板

在搜索框中输入:C/C++

再安装由Microsoft提供的名为C/C++插件

 

2. 安装 MinGW-w64 并配置好环境变量

首先下载 MinGW-w64点这里下载MinGW-w64 。下载完成之后我们开始安装 MinGw-w64,安装路径可以自由定义,我这里安装路径为D:\App\MinGW。安装时需要设置的安装选项如下:

Version :GCC 版本,直接选最高;

Architecture :CPU 架构,系统如果为64位,则选择 x86_64;

Threads :API 模式,使用默认选项;

Exception :异常处理方式,seh 仅针对 64 位架构,sjlj 则兼容 32 位架构;

Build revision :修订版本,使用默认选项;

 

安装过程中需要联网下载部分文件,由于网络问题安装失败的,可以点这里下载免安装版本。下载后直接解压在你想安装的文件夹。

然后我们要在安装路径中找到 bin 文件夹,通常在${MinGW-w64安装位置}\mingw64\bin,以我的安装路径为例,bin 文件夹位于D:\App\MinGW\mingw64\bin。

接下来,我们将刚刚获取的 bin 文件夹的路径添加到系统环境变量。

按 Win + R 键,打开运行窗口,,输入 sysdm.cpl 并回车;

在弹出的 系统属性 窗口,选择 高级 选项卡;

在 高级 选项卡找到 环境变量 按钮,单击 环境变量 按钮,打开 环境变量 窗口 ;

在 环境变量 窗口的 系统变量 区域找到 Path 变量 ,双击 Path 出现 编辑环境变量 窗口;

在 编辑环境变量 窗口点击 新建,在新建的这行输入我们刚刚获取的 bin 文件夹的路径,然后点确定。

 

3. 测试环境变量是否配置正确

在命令行(win +R,输入 cmd 回车打开命令行)输入gcc –version,如果返回的是已安装的 gcc 的版本信息,那么环境变量就配置正确了。

下面是在我的电脑上输入gcc –version的结果,可以看到我安装的版本为:gcc 7.3.0:

C:\Users\NowTime.CC>gcc --version

gcc (GCC) 7.3.0

Copyright (C) 2017 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

4. 创建和设置 C 语言开发工作区

在你的计算机中选择一个合适的位置,作为你的 C 语言开发工作区。建议工作区所在路径仅由字母、数字、下划线组成,不要包含其他的符号。例如空格,空格符号常常作为命令行中命令和参数的间隔符,如果路径包含空格会导致编译时出错。我创建的工作区的路径为:D:\Study\C\WorkSpace

由于

Windows 中文版命令行输出字符是 GB2312 编码的,而 VS Code 工作区默认是 UTF-8 ,这会导致你编写的 C

代码编译后在命令行执行并查看结果时中文会显示乱码,所以我们要单独针对工作区进行设置字符编码,保证程序输出的字符也采用跟命令行一致的 GB2312

编码,步骤如下:

使用 VS Code 打开你创建的工作区;

在 VS Code 左下角的设置按钮进设置,再点击 用户设置 旁边的 工作区设置 ;

在 工作区设置 中添加 "files.encoding":"gb2312"

 

5. 编写你的第一个 C 语言程序

在工作区新建一个 C 语言源文件命名为 hello.c ,输入以下内容:

#include <stdio.h>

#include <windows.h>

int main()

{

printf("hello world!/n");

system("pause");

}

6. 配置导入的头文件参数 c_cpp_properties.json

在编写完毕并保存之后,你可能会看到 #include 这句下面会有绿色波浪线,这是由于编译器没办法找到你所使用的头文件的所在位置。将光标移动到该行,行号左边会出现黄色小灯泡,点击会出现一个提示按钮:Add include path to setting,继续点击该提示,则会在工作区.vscode下生成c_cpp_properties.json文件。将文件修改成下面内容:

留意带注释部分的内容,需要将路径修改成你自己的安装路径哦。

{

"configurations": [{

"name": "MinGW",

"intelliSenseMode": "gcc-x64",

"compilerPath": "D:/App/MinGW/mingw64/bin/x86_64-w64-mingw32-gcc.exe",

"cStandard": "c11",

"cppStandard": "c++17",

"includePath": [

// 下面路径中的 D:/App/MinGw 部分需要替换成你的 MinGw-w64 安装路径

"${workspaceFolder}/**",

"D:/App/MinGW/mingw64/x86_64-w64-mingw32/include",

"D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++",

"D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/tr1"

],

"defines": [

"_DEBUG",

"UNICODE",

"_UNICODE",

"__GNUC__=7",

"__cdecl=__attribute__((__cdecl__))"

],

"browse": {

"path": [

// 下面路径中的 D:/App/MinGw 部分需要替换成你的 MinGw-w64 安装路径

"${workspaceFolder}/**",

"D:/App/MinGW/mingw64/x86_64-w64-mingw32/include",

"D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++",

"D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/tr1"

],

"limitSymbolsToIncludedHeaders": true,

"databaseFilename": ""

}

}],

"version": 4

}

7. 配置调试程序 launch.json

打开已经编写好的 hello.c ,然后按F5调试。因为是第一次调试,系统会弹出选择环境面板,这里选择C++(GDB/LLDB)。

 

选择运行环境后,VS Code 会在工作区.vscode文件夹下创建luanch.json模板文件并打开,将文件内容清空,复制下面的内容到文件中并保存:

留意luanch.json中注释内容,记得把“miDebuggerPath”参数修改成你自己安装位置里的 gdb.exe

gdb.exe位于{MinGW-w64安装位置}\mingw64\bin下面。

{

"version": "0.2.0",

"configurations": [{

// 配置 VS Code 调试行为:

"name": "GDB Debug", // 设置在启动配置下拉菜单中显示调试配置的名称。

"preLaunchTask": "Compile", // 调试会话开始前要运行的任务。

"type": "cppdbg", // 设置要使用的基础调试器。使用 GDB 或 LLDB 时必须是 cppdbg 。

"request": "launch", // 设置启动程序还是附加到已经运行的实例。启动或附加 ( launch | attach ).

"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 调试器将启动或附加的可执行文件的完整路径。

"externalConsole": true, // 设置是否显示外部控制台。

"logging": { // 用于确定应该将哪些类型的消息记录到调试控制台。

"exceptions": true, // 是否应将异常消息记录到调试控制台。默认为真。

"moduleLoad": false, // 是否应将模块加载事件记录到调试控制台。默认为真。

"programOutput": true, // 是否应将程序输出记录到调试控制台的可选标志。默认为真。

"engineLogging": false, // 是否应将诊断引擎日志记录到调试控制台。默认为假。

"trace": false, // 是否将诊断适配器命令跟踪记录到调试控制台。默认为假。

"traceResponse": false // 是否将诊断适配器命令和响应跟踪记录到调试控制台。默认为假。

},

// 配置目标应用程序:

"args": [], // 设置调试时传递给程序的命令行参数。

"cwd": "${workspaceFolder}", // 设置调试器启动的应用程序的工作目录。

"environment": [], // 设置调试时添加到程序环境中的环境变量,例如: [ { "name": "squid", "value": "clam" } ]。

// 自定义 GDB 或者 LLDB:

"windows": {

"MIMode": "gdb", // 指定 VS Code 连接的调试器,必须为 gdb 或者 lldb。

"miDebuggerPath": "D:/App/MinGW/mingw64/bin/gdb.exe" // 调试器的路径,修改为你的安装路径

},

"miDebuggerArgs": "", // 传递给调试器的附加参数

"stopAtEntry": false, // 设置调试器是否停止在目标的入口(附加时忽略)。默认值为 false。

"setupCommands": [{ // 执行下面的命令数组以设置 GDB 或 LLDB

"description": "Enable pretty-printing for gdb",

"text": "-enable-pretty-printing", // 鼠标悬停查看变量的值,需要启用 pretty-printing 。

"ignoreFailures": true // 忽略失败的命令,默认为 false 。

}]

}]

}

8. 配置调试前执行的任务 task.json

再按一次F5,会弹出“找不到任务”的提示窗口,点击配置任务按钮,如下图所示:

 

然后在弹出的命令面板选择使用模板创建task.json文件,如下图所示:

 

继续选择Others 运行任意外部命令的示例,如下图所示:

 

完成以上步骤之后,会在工作区的.vscode目录下生成tasks.json文件,并自动打开task.json文件。

 

接下来我们将task.json文件内容清空,复制下面的内容到文件中并保存:

{

// 有关 tasks.json 格式的参考文档:https://go.microsoft.com/fwlink/?LinkId=733558 。

"version": "2.0.0",

"tasks": [{

"label": "Compile",

"type": "shell", // { shell | process }

// 适用于 Windows 的配置:

"windows": {

"command": "gcc",

"args": [

"-g",

"\"${file}\"",

"-o",

"\"${fileDirname}\\${fileBasenameNoExtension}.exe\""

// 设置编译后的可执行文件的字符集为 GB2312:

// "-fexec-charset", "GB2312"

// 直接设置命令行字符集为 utf-8:

// chcp 65001

]

},

// 定义此任务属于的执行组:

"group": {

"kind": "build", // { build | test }

"isDefault": true // { true | false }

},

// 定义如何在用户界面中处理任务输出:

"presentation": {

// 控制是否显示运行此任务的面板。默认值为 "always":

// - always:    总是在此任务执行时显示终端。

// - never:    不要在此任务执行时显示终端。

// - silent:    仅在任务没有关联问题匹配程序且在执行时发生错误时显示终端

"reveal": "silent",

// 控制面板是否获取焦点。默认值为 "false":

"focus": false,

// 控制是否将执行的命令显示到面板中。默认值为“true”:

"echo": false,

// 控制是否在任务间共享面板。同一个任务使用相同面板还是每次运行时新创建一个面板:

// - shared:    终端被共享,其他任务运行的输出被添加到同一个终端。

// - dedicated:  执行同一个任务,则使用同一个终端,执行不同任务,则使用不同终端。

// - new:        任务的每次执行都使用一个新的终端。

"panel": "dedicated"

},

// 使用问题匹配器处理任务输出:

"problemMatcher": {

// 代码内问题的所有者为 cpp 语言服务。

"owner": "cpp",

// 定义应如何解释问题面板中报告的文件名

"fileLocation": [

"relative",

"${workspaceFolder}"

],

// 在输出中匹配问题的实际模式。

"pattern": {

// The regular expression.

"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",

// 第一个匹配组匹配文件的相对文件名:

"file": 1,

// 第二个匹配组匹配问题出现的行:

"line": 2,

// 第三个匹配组匹配问题出现的列:

"column": 3,

// 第四个匹配组匹配问题的严重性,如果忽略,所有问题都被捕获为错误:

"severity": 4,

// 第五个匹配组匹配消息:

"message": 5

}

}

}]

}

9. 完成,enjoy it!

到这里,C 开发环境就已经配置完毕。接下来我们在hello.c的编辑窗口按F5运行下,看下效果。

 

如果你还想再创建其他的 C 语言开发工作区,我们只需要新建一个文件夹,再把现在已有工作区目录下的 .vscode 文件夹复制到新建的文件夹即可。

如果觉得作者写的好,有所收获的话,点个关注,推荐一波。

干货分享:在Windows下使用Visual Studio搭建C语言开发环境的更多相关文章

  1. go:windows下用sublime Text搭建go语言开发环境

      一.安装   1.安装go    go安装包地址:http://pan.baidu.com/s/1hq1mrDM(进入下图中箭头所示目录中下载对应版本) * 注意go的安装路径不能包含中文    ...

  2. 在Windows下的virtualenv中搭建Flask+MySQLDb开发环境

    virtualenv和Flask的安装前面已经介绍过了,这里主要讲如何在venv中安装MySQL 安装MySQLdb 下载MySQL-python-1.2.3.win32-py2.7.exe并安装. ...

  3. Windows下使用Visual Studio 2010编译ffmpeg全过程

    在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...

  4. Windows 7 Visual Studio 2008配置OpenGL开发环境

    Windows 7 Visual Studio 2008配置OpenGL开发环境 glut下载地址: http://www.opengl.org/resources/libraries/glut/gl ...

  5. Windows下,配置VS Code的Java开发环境

    Windows下,配置VS Code的Java开发环境 前言 最近痴迷于VS Code的开发环境配置,原因就在于它的轻巧和免费,还能当一个非常棒的文本编辑器.如果之前你配置过VS Code并且失败了, ...

  6. visual studio 2010配置驱动开发环境

    visual studio 2010 配置驱动开发环境 ** 工具/材料 VS2010.WDK开发包 **  配置过程 以下将讲述VS2010驱动开发环境的配置过程,至于必要软件的安装过程这里不再赘述 ...

  7. 如何搭建Visual Studio的内核编程开发环境

    最近正在看<寒江独钓——Windows内核安全编程>这本书,感觉这本书非常好,有兴趣的朋友可以买来看看,有关这本书的信息请参考:http://www.china-pub.com/19559 ...

  8. Visual Studio Code配置GoLang开发环境

    Visual Studio Code配置GoLang开发环境 在Visual Studio Code配置GoLang开发环境 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页: ...

  9. [内核编程] visual studio 2010配置驱动开发环境

    visual studio 2010 配置驱动开发环境 ** 工具/材料 VS2010.WDK开发包 **  配置过程 以下将讲述VS2010驱动开发环境的配置过程,至于必要软件的安装过程这里不再赘述 ...

随机推荐

  1. 源码解读 TDengine 中线程池的实现

    这篇文章中提到了 tsched 的源码可以一读,所以去阅读了一下,总共220来行. 1. 阅读前工作 通过上文了解到这段程序实现的是一个任务队列,同时带有线程池.这段程序是计算机操作系统里经典的con ...

  2. 第17课 - make 中的路径搜索(上)

    第17课 - make 中的路径搜索(上) 1. 问题 在以往的 make 学习中,我们使用到的 .c 文件和 .h 文件都与 makefile 处在同一个路径.在实际的工程项目中,所有的源文件和头文 ...

  3. JavaFX桌面应用-构建程序框架

    看到JavaFX应用很多人都会说JavaFX应用太丑了,确实JavaFX比起Qt.MFC.Delphi这些界面确实丑了一点,但也不是没有可以美化的空间. 跟网页一样,单纯HTML不加任何CSS的时候也 ...

  4. Flutter学习五之网络请求和轮播图的实现

    上期讲到了,怎样实现一个下拉刷新和加载更多的列表,数据更新,需要使用到网络请求,在flutter中,怎样实现一个网络请求呢?官方使用的是dart io中的HttpClient发起的请求,但HttpCl ...

  5. Java基础一篇过(一)反射

    一.反射是个啥 定义 : 在运行状态中动态获取的类的信息以及动态调用对象的方法,这种功能称为java语言的反射机制. 对于任意一个类,都能够知道这个类的所有属性和方法. 对于任意一个对象,都能够调用它 ...

  6. 关于sqlmap当中tamper脚本编码绕过原理的一些总结(学习python没多久有些地方肯定理解有些小问题)

    sqlmap中tamper脚本分析编写 置十对一些编码实现的脚本,很多sqlmap里面需要引用的无法实现,所以有一部分例如keywords就只写写了几个引用了一下,其实这里很多脚本运用是可以绕过安全狗 ...

  7. 据说是面试题:由【if(a==1&&a==2&&a==3)】引发的思考探讨

    有一天,突然在一个微信群有个群友发了张图片抛出了一道题,如图: ​

  8. 《SpringCloudDubbo开发日记》(一)Nacos连官方文档都没写好

    背景 现在的微服务框架一般分dubbo和springcloud两套服务治理体系,dubbo是基于zookeeper为注册中心,springcloud是基于eureka作为注册中心. 但是现在eurek ...

  9. unittest培训后总结记录

    今天在给同学们上了自动化测试单元框架unittest之后,突发奇想,要总结下自己今天上的课程内容.于是有了下面的一幕: 首先,今天上课的目标是要学会关于unittest框架的基本使用及断言.批量执行. ...

  10. 整理requests和正则表达式爬取猫眼Top100中遇到的问题及解决方案

    最近看崔庆才老师的爬虫课程,第一个实战课程是requests和正则表达式爬取猫眼电影Top100榜单.虽然理解崔老师每一步代码的实现过程,但自己敲代码的时候还是遇到了不少问题: 问题1:获取respo ...