1. 程式人生 > 實用技巧 >乾貨分享:在Windows下使用Visual Studio搭建C語言開發環境

乾貨分享:在Windows下使用Visual Studio搭建C語言開發環境

前言:本文將教大家如何使用 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 資料夾複製到新建的資料夾即可。


點選瞭解更多資料,更有免費開源專案和課程等你觀看哦!