1. 程式人生 > 程式設計 >VScode上配置 c語言環境的圖文教程

VScode上配置 c語言環境的圖文教程

成成最近用到C語言了,之前比較喜歡用在vscode上面用python除錯,今天我參考了一些文章,也嘗試了下在vscode上配置c語言的除錯,其中包含一些相關的基礎知識。

1、在vscode裡面下載c/c++官方外掛:

外掛

2、安裝c/c++編譯器:
在windows上藉助MinGW工具安裝,下載地址:[https://sourceforge.net/projects/mingw/ ]

MinGW

安裝在d:\MinGW 下就好(自己新建一個資料夾),然後開啟後這個樣子:

這裡寫圖片描述

在裡面找到mingw32-gcc.bin,mingw32-gcc-g++.bin,以及mingw32-gdb.bin 第一個是c語言檔案的編譯器,第二個是c++的,第三個是用來除錯編譯後文件的。

然後點Installation->Apply all changes.

然後安裝好編譯器,下面設定環境變數,讓系統能夠自動找到gcc命令,我的電腦右擊->屬性->高階系統設定->環境變數,在系統變數裡面找到path,這個path和linux裡面那個path是一樣的,命令列介面下系統就根據這個path變數裡面存的路徑,尋找命令。我們把MinGW的二進位制可執行檔案的資料夾新增進去。

環境變數

這個時候我們開啟命令列輸入gcc,應該可以看到命令已經被識別,會出現引數不足等錯誤
如果你有一個.c檔案,可以在命令列下輸入程式碼,對程式碼進行編譯:
比如我有一個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 test.c -o test.exe

gcc 是編譯命令,剛剛我們安裝的,-g引數是表示編譯時帶上可除錯記號,不然編譯好的東西只能執行不能除錯,-o 是表示指定輸出檔案,後面緊跟輸出檔案的名字,這一條指令就可以將c檔案編譯成一個可執行的二進位制檔案。
然後可以在命令列下執行:

./test.exe

如下圖:

這裡寫圖片描述

我們用vscode進行自動編譯也是這個原理,其實所有的IDE都是這個原理。
問題:如果沒有配置系統環境變數會出現什麼問題?

3、配置vscode
開啟vscode載入剛剛的c檔案,網上網友說編譯c檔案要開啟檔案所在的資料夾,我嘗試了下,確實是這樣的。如下圖:

這裡寫圖片描述

然後點除錯,他會跳出一個launch.json的一個配置檔案:
修改這幾個地方就好:

這裡寫圖片描述

program一項,指明瞭需要執行的檔案,$()的格式是表明這是變數,又vscode自己新增,根據英文可以知道這個變數的含義,miDebuggerPath是我們安裝gdb的路徑,前面提到過他,是用來除錯的二進位制檔案(可執行二進位制檔案也叫命令)。preLauchTask是一個重點(敲黑板),我們這個配置的意思是用gdb去除錯 program引數指定的二進位制檔案,但如果沒有這個檔案怎麼辦,結合之前的例子,我們知道我們可以除錯執行的是gcc編譯生成的二進位制test.exe檔案,但如果沒有這個二進位制檔案,我們是不是應該先用gcc編譯一個出來?preLaunchTask就是幹這個的!

生成tasks.json可以通過,選單裡的任務,然後配置任務,模板然後選other就可以,幾個必須的配置項就像下面:

這裡寫圖片描述

version不重要,跳過。command和args其實剛好拼成我們前面的命令:

gcc -g xxx.c -o xxx.exe

這就自動會生成我們要的exe檔案了。然後我們再結合前面那個配置檔案看一下:

這裡寫圖片描述

假設我們編譯test.c檔案,則${file}就是test.c,然後先執行prelaunchTask,就相當於執行了

gcc -g test.c -o test.exe

由此生成了test.exe檔案
然後又要用gdb除錯${fileBasenameNoExtension}.exe,剛好就是test.exe,這裡的配置和剛剛的輸出檔名要一致,相當於運行了:

gdb test.exe

這樣就啟動除錯了。
最後vscode裡除錯如下圖:

這裡寫圖片描述

總結

到此這篇關於配置VScode c語言環境的圖文教程的文章就介紹到這了,更多相關配置VScode c語言環境內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!