系統環境:64位 Windows 10
1. 環境的準備
(1)、下載 MinGW-w64
MinGW-w64 - for 32 and 64 bit Windows 在此頁面下載MinGW-w64,點擊 Download
MinGW、MinGW-w64,它們是兩個不同的項目,MinGW已經很久沒有更新了,不推薦
(2)、添加環境變量,我的電腦 -> 右鍵 -> 高級系統設置 -> 環境變量 -> 系統變量 -> 在 path 中添加 MinGW-w64 的安裝路徑
(3)、運行cmd,輸入 gcc -v 顯示出對應的版本
(4)、需要安裝的插件:
- C/C++(就是有些教程里的cpptools)
- Code Runner:運行選中代碼段(支持大量語言,包括Node)
- Include Autocomplete:提供頭文件補全
- C/C++ Snippets:Snippets即重用代碼塊
其他可選插件:
- Bracket Pair Colorizer:彩虹花括號
- One Dark Pro:大概是VS Code安裝量最高的主題
- GBKtoUTF8:把GBK編碼的文檔轉換成UTF8編碼的
- C/C++ Clang Command Adapter:提供靜態檢測(Lint)
2. 配置四個.json文件
(1)、創建一個你打算存放代碼的文件夾(稱作工作區),路徑不能含有中文和空格
(2)、打開VS Code,選擇打開文件夾,選擇剛才那個文件夾,點VS Code上的新建文件夾,名稱為.vscode(這樣做的原因是Windows的Explorer不允許創建的文件夾第一個字符是點)
(3)、創建以下4個文件放到.vscode文件夾下,效果如下圖所示:
launch.json
tasks.json
settings.json
c_cpp_properties.json
(4)、launch.json 文件中,加入如下代碼:*
"miDebuggerPath": "D:\mingw-w64\mingw64\bin\gdb.exe", 需要修改為你安裝的 MinGW-w64 的路徑
{
"version": "0.2.0",
"configurations": [
{
"name": "CppDebug",
"type": "gdb",
"request": "launch",
"target": "${fileDirname}/${fileBasenameNoExtension}.exe",
"cwd": "${workspaceRoot}",
"preLaunchTask": "CppDebug" // 調試會話開始前執行的任務,一般為編譯程序。與tasks.json的label或者taskName相對應
},
{
"name": "C++ Launch", // 配置名稱,將會在調試配置下拉列表中顯示
"type": "cppdbg", // 調試器類型:Windows表示器使用cppvsdbg;GDB和LLDB使用cppdbg。該值自動生成
"request": "launch", // 調試方式
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 要調試的程序(完整路徑,支持相對路徑)
"args": [], // 傳遞給上面程序的參數,沒有參數留空即可
"stopAtEntry": false, // 是否停在程序入口點(停在main函數開始)
"cwd": "${workspaceRoot}", // 調試程序時的工作目錄
"environment": [],
"externalConsole": true, // 調試時是否顯示控制臺窗口
"preLaunchTask": "LaunchBuild",
"linux": { // 下面是Linux平臺下,需要配置的參數,這里暫時不用關心
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
"osx": { // 下面是Mac平臺下,需要配置的參數,這里暫時不用關心
"MIMode": "lldb"
},
"windows": { // 下面是Windows平臺下,需要配置的參數
"MIMode": "gdb", // VSCode要使用的調試工具
"miDebuggerPath": "D:\\mingw-w64\\mingw64\\bin\\gdb.exe", // miDebugger的路徑,該值必須設置。盡管會自動搜索
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
},
{ // 不用關心
"name": "C++ Attach",
"type": "cppdbg",
"request": "attach",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"processId": "${command:pickProcess}", // 要Attach的進程ID
"linux": {
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
"osx": {
"MIMode": "lldb"
},
"windows": {
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
}
]
}
(5)、tasks.json 文件中,加入如下代碼:
{
"version": "0.1.0",
"tasks": [
{
"taskName": "LaunchBuild", //任務名稱
"command": "g++",
"isBuildCommand": true, //編譯, 快捷鍵crtl+shift+B,需要這個標識
"args": [
"-fexec-charset=GBK", // 支持中文顯示
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
], // 編譯命令參數
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"taskName": "CppDebug", //任務名稱,進行Debug調試,快捷鍵:F5
"command": "g++",
"args": [
"-fexec-charset=UTF-8",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}
(6)、settings.json 文件中,加入如下代碼:
Code Runner的命令行和某些選項可以根據自己的需要在此處修改, 以下代碼根據自己的情況調整,寫完一個以后要打逗號,最后一個就不用了
這個設置會用在全局 settings.json 里(如果不需要,這個文件可以為空)
{
"editor.fontFamily": "Consolas, 微軟雅黑", // 控制編輯器字體
"workbench.colorTheme": "One Dark Pro", // 主題
"files.trimTrailingWhitespace": true, // 保存時,刪除每一行末尾的空格
"workbench.colorCustomizations": {
"activityBar.foreground": "#33ff66" // 自定義顏色
},
"git.enabled": false, // 如果你不用git,我建議你關閉它
"editor.minimap.enabled": false, // 我個人不用minimap,就是右邊那個東西
"editor.dragAndDrop": false, // 選中文字后,可以拖動它們調整位置。我是不需要
"files.autoGuessEncoding": true // 啟用后,會在打開文件時嘗試猜測字符集編碼
}
(7)、c_cpp_properties.json 文件中,加入如下代碼:
- 我的版本是 7和 7.2.0,若是和我的不同,則需要修改該文件中的路徑 (必須修改成 MinGW-w64 的安裝路徑),否則會提示找不到頭文件;
- 輸入 gcc -v 可以查看版本號
- Windows下的路徑為反斜杠,原本應使用兩個反斜杠來轉義,但直接用斜杠在VS Code中也接受
{
"configurations": [
{
"name": "Win32",
"intelliSenseMode": "clang-x64",
"includePath": [
"${workspaceFolder}",
"D:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++",
"D:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/x86_64-w64-mingw32",
"D:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/backward",
"D:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include",
"D:/mingw-w64/mingw64/include",
"D:/mingw-w64/mingw64/x86_64-w64-mingw32/include",
"D:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include-fixed"
],
"defines": [
"_DEBUG",
"UNICODE",
"__GNUC__=7",
"__cdecl=__attribute__((__cdecl__))"
],
"browse": {
"path": [
"${workspaceFolder}",
"D:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++",
"D:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/x86_64-w64-mingw32",
"D:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/backward",
"D:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include",
"D:/mingw-w64/mingw64/include",
"D:/mingw-w64/mingw64/x86_64-w64-mingw32/include",
"D:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/7.2.0/include-fixed"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 3
}
(8)、調式
直接按快捷鍵 F5,就可以進行了調試
- 存在一個問題:程序中出現“ system("pause"); ”, 進行調試,在vs code的調試控制臺顯示亂碼,顯示的字符是???????????. . .
- 解決方式:注釋 system("pause"); 不影響調試 ( 不知道怎么更改 vs code的調試控制臺的編碼格式 )
(9)、編譯、運行
需要先編輯,再運行
1、編譯,按快捷鍵 crtl+shift+B,進行編譯
2、運行,操作如下:
3、如果之前執行過調試,需要再次編譯后,再運行,不然會產生中文亂碼
原因:調試F5 產生的運行文件的編碼格式是UTF-8,在終端中,中文顯示亂碼
(10)、永久解決cmd窗口,中文顯示亂碼
1. win+R 輸入regedit 進入注冊表
2. 找到 HKEY_CURRENT_USER\Console%SystemRoot%_system32_cmd.exe 如果 該項下已存在CodePage項,則把值改為十進制”65001”;如果不存在,在該項下新建一個 DWORD(32位值),命名為“CodePage”,值設為“65001”
3. 重啟cmd后生效
4. 對于Power shell修改同樣,只需在第2步修改
%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe 下的項。