准备工具
MinGW
下载地址:
https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
文件清单
- x86_64-posix-sjlj
- x86_64-posix-seh
- x86_64-win32-sjlj
- x86_64-win32-seh
- i686-posix-sjlj
- i686-posix-dwarf
- i686-win32-sjlj
- i686-win32-dwarf
释义1:
- DWARF:一种带调试信息(DWARF-2(DW2)EH)的包, 所以比一般的包尺寸大,仅支持32位系统
- SJLJ:跨平台,支持32,64位系统,缺点是:运行速度稍慢,GCC不支持
- SEH: 调用系统机制处理异常,支持32,64位系统,缺点是:GCC不支持(即将支持)
释义2:
- x86_64: 简称X64,64位操作系统
- i686: 32位操作系统(i386的子集),差不多奔腾2(1997年5月)之后的CPU都是可以用的;
释义3:
- posix: 启用了C++ 11 多线程特性
- win32: 未启用 (从时间线上正在尝试也启用部分 Treading)
区别
- DWARF DWARF- 2(DW2)EH ,这需要使用DWARF-2(或DWARF-3)调试信息。 DW-2 EH可以导致可执行文件略显膨胀,因为大的调用堆栈解开表必须包含在可执行文件中。
- setjmp / longjmp(SJLJ)。基于SJLJ的EH比DW2 EH慢得多(在没有异常时会惩罚甚至正常执行),但是可以在没有使用GCC编译的代码或没有调用堆栈的代码上工作。
- 结构化异常处理(SEH) (Structured Exception Handling)Windows使用自己的异常处理机制。
Visual Studio Code
下载地址:
https://code.visualstudio.com/
Visual Studio Code插件:C/C++
Visual Studio Code插件:Code Runner
Visual Studio Code插件:Chinses Language
MinGW安装C/C++编译器和调试器
打开mingw-get-setup.exe
,依次点击install
、continus
、continus
选择左边的All Pcakages
-MinGW
-MinGW Base System
,在右边找到下列三个名称mingw32-gcc
(C语言编译器)mingw32-gcc-g++
(C++编译器)mingw32-gdb
(调试器)
右键class
列下面的bin
这一行,选择Mark for installation
(每一行都要右键选择)
选择左上角的installation
-Apply Changes
选择Apply
等待安装完成
点击Close
配置调试C/C++
设置环境变量,让系统能够自动找到gcc命令,此电脑
右键->属性
->高级系统设置
->环境变量
,在系统变量里面找到path
->编辑
->新建
,输入C:\MinGW\bin
,点击确定 在系统变量
点击新建
,变量名输入include
,变量值输入C:\MinGW\include
,点击确定,确定,再确定。
打开CMD控制台,输入gcc -v
,如果出现下列现象即成功
在任意文件夹创建一个文件(注意此文件的路径不要有中文)test.c,输入下列代码。
#include <stdio.h>
int main(){
int n;
printf("This is a test file!\r\nInput a number: ");
scanf("%d",&n);
printf("The number is %d",n);
return 0;
}
然后在文件所在目录下的命令行中输入下列代码。(gcc是编译命令,刚刚我们安装的,-g 参数是表示编译时带上可调试记号,不然编译好的东西只能运行不能调试,-o 是表示指定输出文件,后面紧跟输出文件的名字,这一条指令就可以将c文件编译成一个可执行的二进制文件)
gcc -g test.c -o test.exe
在CMD命令行输入下列代码,运行:
test.exe
如果是PowerShell,需要输入
.\test.exe
如下图:
用Visual Studio Code进行自动编译也是这个原理。
配置Visual Studio Code
安装插件后右键Code Runner,选择扩展设置
勾选图中两项
在资源管理器中打开刚才c文件所在的文件夹,打开test.c,点击右下角的UTF-8
->通过编码保存
->选择Simplified Chinese(GB 2312)
(解决中文乱码),按下Ctrl+Alt+N运行
如果需要按F5调试运行,则需要在main函数里面return语句的前面加上
system("pause");
或者在return 0;
这一行打断点(两种方法防止控制台一闪而过。)