成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇帶你用VS Code調試C代碼

開發 開發工具
我們這里使用的MinGW-w64是MinGW的升級版,MinGW只能編譯32位程序,而MinGW-w64可以編譯64位和32位程序。MinGW已經停止更新了,所以大家還是要使用MinGW-w64。

1、前言

首先說明的是vscode是代碼編輯器,并不是編譯器,它本身并不能編譯C語言。

在這里我們使用的是MinGW-w64作為C語言的編譯器。MinGW-w64的前身是MinGW的全稱是:Minimalist GNU on Windows。它實際上是將經典的開源 C語言 編譯器 GCC 移植到了 Windows 平臺下,并且包含了 Win32API ,因此可以將源代碼編譯為可在 Windows 中運行的可執行程序。

而且還可以使用一些 Windows 不具備的,Linux平臺下的開發工具。一句話來概括:MinGW 就是 GCC 的 Windows 版本 。

我們這里使用的MinGW-w64是MinGW的升級版,MinGW只能編譯32位程序,而MinGW-w64可以編譯64位和32位程序。MinGW已經停止更新了,所以大家還是要使用MinGW-w64。

MinGW-w64推薦去官網下載:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/。

  1. 下載綠色版,下載速度快。
  2. 下載windows的安裝版,一般情況下下載失敗。

所以演示綠色版的安裝過程,綠色版只是需要添加環境變量,將綠色版解壓到D盤根目錄,如下:

按步驟添加環境變量。

測試MinGW-w64是否安裝完畢。

2、編譯C代碼

下面將用MinGW-w64編譯C代碼,正如上文所說MinGW-w64就是gcc的windows版,所以直接就是gcc編譯C代碼。在D盤新建目錄C,并在目錄C中新建main.c文件,代碼如下:

#include <stdio.h>
#include <AclAPI.h>
int main(){
char name[100];
printf("What is your name?\n");
scanf("%s",name);
printf("Hello,%s,nice to meet you!\n",name);
}

這就是一個簡單C程序。下面使用window的cmd編譯并運行這個C程序。

使用windows的powershell編譯也是一樣的結果。

3、vscode編譯

上面演示了如何使用MinGW-w64編譯C代碼,vscode只需要調用這些命令就可以編譯C代碼,那么vscode的插件就可以優雅的解決這個問題,code runner是一款優秀的編譯插件。

因為我們的C代碼使用了scanf,需要在終端輸入所以需要使能code runner的Run In Terminal功能。

安裝了這款插件,在右側會出現一個運行按鈕。

點擊這個運行按鈕,就能編譯并運行這個C代碼。注意看下圖1處,其實就是調用gcc的命令,和我們上面講的一樣。

類似的插件還有C/C++ Compile Run插件。

離開插件就不能編譯???vscode當然可以自己調用gcc,自己完成代碼的編譯,選擇運行->以非調試模式運行。這里我們只是編譯C代碼,然后運行,debug調試的問題,下面再說。

依次選擇C++(GDB/LLDB)和C/C++: gcc.exe 生成活動文件。

看到終端輸出如下(下圖我將兩個終端并排顯示,默認不是這樣顯示的)。

這里可以看到,vscode運行了兩個終端,一個編譯C語言,一個運行C程序。并且產生了兩個文件如下:

launch.json作用是在C語言文件啟動調試時提供配置參數。

tasks.json是一個任務,用于編譯C語言的。

關于報錯,下面制造了一個簡單的錯誤,在終端中給出了出錯的位置,這是gcc給出的錯誤,也就是導致編譯不過的錯誤。

但下圖的錯誤,是vscode認為你有錯誤,給你提示的,不是所有vscode報的錯誤gcc都會認為有問題的。并且vscode給出的錯誤一般與安裝的插件有關。我們重點看gcc的錯誤。

4、多文件編譯

上面已經完成了C的編譯和運行,但只是一個文件,正常情況下一般會有多個文件。

我們有以下源碼來驗證多文件編譯。

//main.c
#include<stdio.h>
#include "a.h"
int main(void) {
int number;
printf("input:\n");
scanf("%d", &number);
printHello();
if((number > 1) && (number <= 100)) {
printf("Small\n");
} else if((number > 101) && (number <= 200)) {
printf("Middle\n");
} else {
printf("Large\n");
}
return 0;
}
//a.c
#include<stdio.h>
#include "a.h"
void printHello(void) {
printf("Hello world");
}
//a.h
#ifndef __A_H_
#define __A_H_
void printHello(void);
#endif

首先使用code runner,運行結果如下:

可以看出,code runner只編譯main.c,編譯報錯找不到a.c中的printHello函數。修改code runner的擴展配置Excutor Map,單擊前面的小齒輪,選擇:將設置復制為JSON文本。

然后單擊在settings.json中編輯。

打開文件如下settings.json。

其中的一句代碼是我們配置使能runInTerminal的,將我們剛剛復制的粘貼到它的下一行。

注意1處需要添加一個逗號,并將2處的$fileName修改為*.c,如下:

保存文件,返回main.c,執行code cunner的運行按鈕,可以看到執行gcc的編譯時,編譯所有的c源文件。

看到這里,大家應該就理解了配置文件和執行的gcc命令之間的關系了。

對于上文提到的vscode自己也可以編譯的問題,不使用插件如何編譯多個文件?上文提到task.json是編譯C程序的,它的配置如下:

同理將1處的${file}修改為*.c就可以編譯多個C文件了。這里就不再演示了。

5、調試

調試是很簡單的,在調試之前需要保證編譯時沒有問題的(雖然這句話像是廢話)在其他IDE中你可以直接debug調試,但在VScode中,建議你先編譯,首選保證編譯過了。因為vsode的編譯環境是配置的,可能出現問題,如果編譯不通過那就更不能調試了。

編譯通過的程序,選中main.c直接選擇運行->啟動調試。

剩下的就和普通的IDE沒有大的差異了。

  1. 自動查看變量。
  2. 手動查看變量。
  3. 調用的堆棧信息。
  4. 可以和其他IDE一樣打斷點。
  5. 分別是運行,單步,進入函數,跳出函數,復位,停止等常見的調試按鈕。
  6. 終端交互界面。
責任編輯:姜華 來源: 知曉編程
相關推薦

2021-11-16 14:09:58

Containerd Dockerk8s

2022-02-17 08:35:59

OLTPOLAP數據倉庫

2022-02-23 09:36:11

GoRuby編程語言

2021-07-27 08:16:35

DeepinIptablesservice文件

2022-02-22 08:15:59

微服務架構單體架構

2021-05-20 06:57:16

RabbitMQ開源消息

2023-04-20 08:00:00

ES搜索引擎MySQL

2021-08-23 06:25:57

CSS 技巧animation

2021-06-16 08:28:25

unary 方法函數技術

2021-05-17 05:51:31

KubeBuilderOperator測試

2021-05-18 05:40:27

kubebuilderwebhook進階

2022-02-24 07:56:42

開發Viteesbuild

2025-01-17 07:00:00

2022-03-10 08:31:51

REST接口規范設計Restful架構

2021-05-12 06:18:19

KubeBuilderOperatork8s

2021-04-27 09:22:12

QML編程語言

2021-04-15 05:53:35

C# 索引器對象

2022-02-21 09:44:45

Git開源分布式

2023-05-12 08:19:12

Netty程序框架

2021-07-28 10:02:54

建造者模式代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产视频久久 | 伊人伊人伊人 | 三级视频网站 | 国产精品视频中文字幕 | 天天躁日日躁狠狠的躁天龙影院 | 欧美八区 | 一级特黄在线 | 91麻豆精品一区二区三区 | 欧美成年人 | 精品欧美一区二区在线观看视频 | 亚洲精品一二三区 | 欧美一级特黄aaa大片在线观看 | 久久久久国产 | 老外几下就让我高潮了 | 国产激情视频在线 | 久久中文字幕av | 91在线免费视频 | 亚洲综合无码一区二区 | 青青久在线视频 | 91麻豆精品国产91久久久久久 | 欧美又大粗又爽又黄大片视频 | 人人九九精| 精品欧美一区二区三区免费观看 | 四虎网站在线观看 | 久久精品一区二区三区四区 | 亚洲三区在线观看 | 看羞羞视频免费 | 99精品国自产在线 | 91精品久久| 美国一级黄色片 | 99精品视频免费观看 | 99精品视频一区二区三区 | 欧美成人a | 亚洲精品99999 | 欧美日韩亚洲视频 | 欧美理论片在线观看 | 一区二区三区四区在线视频 | 91久久精品一区二区二区 | 欧美一区二区 | 国产精品国产a | 国产网站在线播放 |