【基礎】Windows 中通過 VSCode 使用 GCC 編譯調試 C++

在這里插入圖片描述

準備

  1. 安裝 VSCode 及 C++ 插件。
  2. 通過 MSYS2 安裝 MinGW-w64 工具鏈,為您提供必要的工具來編譯代碼、調試代碼并配置它以使用IntelliSense。參考:Windows 中的 Linux 開發工具鏈

驗證安裝:

gcc --version
g++ --version
gdb --version

三個核心配置文件

  • tasks.json: 用于設置編譯指令
  • launch.json: 用設置調試指令
  • c_cpp_properties.json 編譯器及: IntelliSense 設置

tasks.json 編譯調試單個文件

VSCode 檢測到 C++ 文件,第一次運行程序時, C++ 插件根據選擇的編譯器創建一個 task.json 文件,您可以在項目 .vscode 文件夾中找到。

"type": "cppbuild",
"label": "編譯C++文件",
"command": "D:\\program\\msys64\\ucrt64\\bin\\g++.exe",
"args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"
],

該任務指示 g++ 獲取當前活動文件(${file}),對其進行編譯,并在當前文件所在目錄(${fileDirname})中生成一個輸出文件(通過 -o 選項)。輸出文件的名稱與當前活動文件的主文件名相同,僅擴展名改為 .exe ${fileBasenameNoExtension}.exe)。該操作將生成 <file_name>.exe

通過 launch.json 定制調試行為

默認情況下會自動生成調試配置。在某些情況下,你可能希望自定義調試配置,例如指定要在運行時傳遞給程序的參數,這通過 launch.json 文件來實現。
可通過在運行和調試界面添加配置實現,選擇c++(gdb)啟動,會自動生成 launch.json 文件。

{"configurations": [{"name": "編譯并調試c++文件", // 任務名稱"type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "C:\\msys64\\ucrt64\\bin\\gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "Set Disassembly Flavor to Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "編譯C++文件" // 前置任務}],"version": "2.0.0"
}

三、更多設置 c_cpp_properties.json

如果您希望對C/C++擴展有更多的控制,您可以創建一個c_cpp_properties.json文件,它將允許您更改設置,例如編譯器的路徑,包括路徑,c++標準(默認是c++ 17)等。Ctrl+Shift+P 在命令面板中輸入“C/C++: Edit Configurations(UI)”,可以查看C/C++配置界面。

{"configurations": [{"name": "GCC","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG", "UNICODE", "_UNICODE"],"windowsSdkVersion": "10.0.22000.0",// 推斷c++標準庫頭文件的路徑。當擴展知道在哪里可以找到這些文件時,它可以提供智能補全和Go to Definition導航等功能。"compilerPath": "D:/program/msys64/ucrt64/bin/g++.exe", "cStandard": "c17","cppStandard": "c++20","intelliSenseMode": "windows-gcc-x64"}],"version": 4
}

插件

可以通過安裝 C/C++ Runner 插件,自動生成配置文件,并可視化操作(如切換編譯路徑、通過點擊按鈕編譯、運行、調試)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73245.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73245.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73245.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python機器學習——新手入門學習筆記

一&#xff0c;概論 1.什么是機器學習 定義&#xff1a; 機器學習是從數據中自動分析獲得模型&#xff0c;并利用模型對未知數據進行預測。 其實就是通過問題和數據&#xff0c;發現規律&#xff0c;并進行預測&#xff0c;與人腦相似。目的就是從歷史數據當中獲得規律&#x…

Jackson使用ArrayNode對象實現JSON列表數據(二):增、刪、改、查

JSON數據的操作,系列文章: 《Jackson的核心類與API方法:ObjectMapper、JsonNode、ObjectNode、ArrayNode》 《Jackson的使用與創建Jackson工具類》 《Jackson使用ObjectNode對象實現JSON對象數據(一):增、刪、改、查》 《Jackson使用ArrayNode對象實現JSON列表數據(二)…

Packaging Process

Packaging Process 軟包裝流程&#xff0c;在我們自動化設備的情況下&#xff0c;最后實現自動化工具 一小盒2袋&#xff0c;一大盒3小盒&#xff0c;一大盒6袋

地理信息系統(GIS)在智慧城市中的40個應用場景案例

在智慧城市發展進程中&#xff0c;地理信息系統&#xff08;GIS&#xff09;作為關鍵技術之一&#xff0c;正扮演著不可或缺的角色&#xff0c;堪稱智慧城市的神經中樞。通過空間數據分析優化城市管理&#xff0c;GIS技術為智慧城市的構建提供了強大的支持。 本文分享了GIS在智…

在 Jenkins Pipeline 中利用 Groovy 的閉包特性創建自定義語法糖

在 Jenkins Pipeline 中利用 Groovy 的閉包特性創建自定義語法糖&#xff0c;可以讓流水線代碼更簡潔易讀。以下是實現思路和示例&#xff1a; 1. 基礎閉包方法定義 // 定義一個優雅的 stage 語法 def elegantStage(String name, Closure body) { stage(name) { ec…

【藍橋杯】每日練習 Day11 逆序對問題和多路歸并

目錄 前言 超快速排序 分析 代碼 小朋友排隊 分析 代碼 魚塘釣魚 分析 代碼 前言 本來計劃今天寫五道題的&#xff0c;結果計劃趕不上變化&#xff0c;誰能告訴我我的時間都去哪了。。。 今天給大家帶來三道題目&#xff0c;兩道逆序對問題&#xff0c;分別用歸并排…

OpenCV 圖像基本操作

之前幾篇文章介紹了OpenCV的一些模塊概念,并沒有細說每個模塊具體的方法和使用。接下來就會詳細介紹每個模塊模塊包含的方法和使用。 本文將詳細介紹圖像的四種基本操作:訪問和修改像素值、圖像 ROI (Region of Interest) 操作、圖像通道分離與合并、以及圖像的縮放、旋轉、…

酷淘商場項目【從零到一詳解】Web端

?博客主頁&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客內容》&#xff1a;.NET、Java.測試開發、Python、Android、Go、Node、Android前端小程序等相關領域知識 &#x1f4e2;博客專欄&#xff1a; https://blog.csdn.net/m0_63815035/cat…

Gemini 2.0 Flash 圖片去水印測試

Gemini 2.0 Flash 模型不僅會生成包含名人和受版權保護角色的圖像&#xff0c;還會去除現有照片中的水印。 據 X 和 Reddit 上的多位用戶指出&#xff0c;Gemini 2.0 Flash 模型不僅會去除水印&#xff0c;還會嘗試填補因水印刪除而產生的空白區域。其他基于人工智能的工具也能…

STM32學習筆記之keil使用記錄

&#x1f4e2;&#xff1a;如果你也對機器人、人工智能感興趣&#xff0c;看來我們志同道合? &#x1f4e2;&#xff1a;不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸對你有幫助&#xff0c;可點贊 &#x1f44d;…

MQTT消息服務器新玩法:EMQX結合內網穿透的實戰配置指南

文章目錄 前言1. 查看EMQX本地WS端口2. Linux安裝Cpolar工具3. 配置WS公網連接地址4. WS公網地址連接測試5. 配置WSS公網連接地址6. WSS公網地址連接測試 前言 隨著物聯網技術的不斷發展&#xff0c;MQTT作為一種輕量級的消息發布/訂閱協議&#xff0c;在物聯網通信中扮演著越…

編程題記錄3

九宮幻方 題目鏈接&#xff1a;https://www.lanqiao.cn/problems/100/learning/?page1&first_category_id1&second_category_id3&tags%E7%9C%81%E8%B5%9B&tag_relationintersection 先旋轉、鏡像得到所有的情況&#xff0c;可以發現情況是可以暴力得出的。…

電機控制常見面試問題(十八)

文章目錄 一.電機控制高級拓撲結構1.LLC 二.談談電壓器飽和后果三.電壓器繞組連接方式的影響四.有源逆變的條件 一.電機控制高級拓撲結構 1.LLC LLC是什么&#xff1f;—— 一個會"變魔術"的電源盒子 想象你有一個魔法盒子&#xff0c;能把電池的電壓變大或變小&…

C#設計模式快速回顧

知識點來源&#xff1a;人間自有韜哥在&#xff0c;豆包 目錄 一、七大原則1. 單一職責原則 (Single Responsibility Principle)2. 開放封閉原則 (Open-Closed Principle)3. 里氏替換原則 (Liskov Substitution Principle)4. 接口隔離原則 (Interface Segregation Principle)5…

匯編語言高級編程技巧:從基礎到進階

前言 匯編語言作為底層編程語言&#xff0c;直接操作硬件&#xff0c;執行效率高&#xff0c;但編寫復雜邏輯時往往顯得繁瑣。通過使用匯編偽指令和宏&#xff0c;我們可以實現類似于高級語言的結構&#xff0c;如條件判斷、循環、結構體和函數等&#xff0c;從而提升代碼的可讀…

XSS跨站腳本攻擊漏洞(Cross Site Scripting)

前提概要 本文章主要用于分享XSS跨站腳本攻擊漏洞基礎學習&#xff0c;以下是對XSS跨站腳本攻擊漏洞的一些個人解析&#xff0c;請大家結合參考其他文章中的相關信息進行歸納和補充。 XSS跨站腳本攻擊漏洞描述 跨站腳本攻擊&#xff08;XSS&#xff09;漏洞是一種常見且危害較…

2、pytest核心功能(進階用法)

目錄 1、標記&#xff08;Markers&#xff09;&#xff1a; 自定義插件 內置標記 2、夾具&#xff08;Fixtures&#xff09;&#xff1a; 夾具得用法 夾具作用域 3、鉤子&#xff08;hook&#xff09;&#xff1a; 這篇是最重要的 測試文件中需要用到的 總的來說 有以下…

恒流源電路深度解析:各類架構的優缺點與應用場景

點擊下面圖片&#xff0c;為您提供全新的嵌入式學習路線 文章目錄 ①. 單晶體管恒流源②. NPNPNP組合恒流源③. 雙晶體管恒流源④. 鏡像電流源⑤. 比例電流源⑥. 微電流源⑦. 加射極輸出的鏡像電流源⑧. 威爾遜電流源⑨.綜合對比表⑩.選型建議 恒流源是電子電路中的基礎模塊&…

研究生入學前文獻翻譯訓練

文獻翻譯 人工智能《Meta - Learning with Memory - Augmented Neural Networks》one-shot learning:Neural Turing Machines,NTMs《Model - Agnostic Meta - Learning for Fast Adaptation of Deep Networks》Meta - learninggradient stepsfinetune《Attention Is All You …

在IDEA中快速注釋所有console.log

在IDEA中快速注釋所有console.log 在前端IDEA中&#xff0c;快速注釋所有console.log語句可以通過以下步驟實現2&#xff1a; 打開要修改的文件。使用快捷鍵CtrlF打開搜索框。點擊打開使用正則搜索的開關或者通過AltR快捷鍵來打開。在搜索框輸入[]*console.log[]*&#xff0c;…