C++學習之路:從頭搞懂配置VScode開發環境的邏輯與步驟

目錄

  • 編輯器與IDE
  • 基于vscode的C++開發環境配置
    • 1. 下載vscode、淺嘗編譯。
      • 番外篇
    • 2. 安裝插件,賦能編程。
    • 3. 各種json文件的作用。
      • c_cpp_properties.json
      • task.json
      • launch.json
  • 總結&&彩蛋

編輯器與IDE

?上一篇博客已經介紹過了C++程序的一個編譯流程,從這篇文章開始進行編程的實驗。
?正所謂“工欲善其事,必先利其器”,有很多小白入門時大把的時間都被浪費在配置和安裝開發環境上,因此這篇博客將從易于理解的角度來講講怎么樣配好一個C++的開發環境,目標是一次學習永遠記憶。
?其實寫一個能運行的程序是一個很簡單的事情,如果你用的是windows系統可以直接創建一個擴展名為.cpp的文件,然后用自帶的文本編輯器進行編輯,然后在終端使用g++編譯器對其進行編譯就能得到一個能運行的.exe文件了,因此C++開發環境只需要文本編輯器+編譯器即可完成搭建。
?但事實上,為了更舒服與高效地寫程序,我們還需要許多額外的功能,例如自動補全、語法糾錯、程序調試 等。單個文本編輯器(例如vscode)不具備這樣的功能,因此還需要安裝額外的一些插件來配合使用,這就是這章主要講的內容如何在vscode上安裝與配置好C++開發需要的插件
?但對于IDE(集成開發環境)來說,這些插件功能與文本編輯器本身已經融為一體,不需要額外的安裝配置,使用起來比vscode輕松簡單很多,常見的IDE有,DevC++、VS、CLion,Eclipse等。但為什么還需要勞心費力地教大家學習使用vscode呢?

  1. 首先,vscode全開源,市面上大部分的IDE都需要收費與許可證。
  2. 其次,vscode可以在Windows也可以在Linux上使用,一次學習終身有用。
  3. 最重要的是vscode支持多種多樣的插件與擴展功能,例如ai代碼補全等,擁有傳統IDE不具備的靈活性。
  4. 最后一點就是帥!能顯得自己很專業。

基于vscode的C++開發環境配置

1. 下載vscode、淺嘗編譯。

做這一步前,請先確認你安裝了MinGW編譯環境
?點擊這個鏈接進入官網進行下載,完成之后進行安裝,這里要注意,安裝路徑不要出現中文!!!
在這里插入圖片描述
安裝好后我們打開vscode:
在這里插入圖片描述
選做,只看就行)此時界面一片漆黑,還有很多看不懂的外國語。我們先不著急進行漢化,來淺嘗一下vscode作為文本編輯器的功能,新建一個hello_world.cpp文件,并在其中寫入經典開局代碼:

#include<iostream>
int main()
{std::cout << "hello world!\n" <<endl;return 0;
}

明擺著告訴你,上面的代碼里有些問題(自己去發現)。但是在vscode中顯示的效果如下:
在這里插入圖片描述
?我們可以發現,vscode作為一個文本編輯器,對于編程自帶高亮功能,這表明它其實是專門設計用來編程的一個文本編輯器。并且重要的是,原生的vscode對于錯誤代碼并沒有糾錯能力更不要說自動補全功能了。
?根據前面的知識,我們可以使用終端運行g++編譯器來對上面的代碼進行編譯:
點擊Terminal-->New Terminal在vscode中創建一個終端。
在這里插入圖片描述
在終端中輸入g++ --version查詢一下編譯器是否存在以及是否好用。如果顯示你沒有安裝編譯器,那么可以自行百度一些MinGW(推薦)或者MSVC的安裝,十分簡單。
在這里插入圖片描述
輸入g++編譯指令,對代碼進行手工編譯:

g++ hello_world.c -o hell_world

在這里插入圖片描述
如果你代碼沒改好,那么編譯就會報錯,顯示endl前少了作用域std:: 補上這個部分,運行編譯:
在這里插入圖片描述
發現不再報錯,同時我們的文件夾下多了一個hello_world.exe文件,輸入:

.\hello_world.exe

執行結果如下,果然輸出了hello_world!語句
在這里插入圖片描述

番外篇

g++編譯器利用-c選項可以只編譯出.o文件,再通過手工鏈接的方式將.o·文件鏈接為.exe可執行文件。
在這里插入圖片描述

2. 安裝插件,賦能編程。

點擊最左邊的擴展,搜索擴展插件:
在這里插入圖片描述
C/C++編程安裝兩個插件即可:

  1. Chinese (Simplified) (簡體中文) Language Pack for Visual Studio Code(漢化包)
  2. C/C++ Extension Pack(這個包包含了C/C++、C\C++Themes、CMake Tools
    安裝完重啟后,如下圖:
    在這里插入圖片描述
    這下我們發現,vscode開始自動糾錯了,并且補全等功能也有了,仿佛似乎它已然成為了一個IDE。并且注意右上角新出現的三角形
    在這里插入圖片描述
    點擊后發現有兩個選項:
    在這里插入圖片描述
    點擊運行C/C++文件,在隨后的選項框中選擇我們需要的編譯器g++:
    在這里插入圖片描述
    ?這樣,我們就可以實現代碼一鍵運行功能了。
    總結:安裝插件后,vscode得以實現自動糾錯、代碼補全、一鍵編譯、一鍵調試等功能。

3. 各種json文件的作用。

在Visual Studio Code(VSCode)中,.vs文件夾是一個用于存儲與項目相關的配置和臨時數據的目錄。下面介紹幾個重要的.json文件。

c_cpp_properties.json

這個文件主要用來配置C/C++編輯器的自動補全和索引等功能。按下 F1 調出面板,輸入 C/C++,選擇編輯配置(UI)。
首先找到編譯器路徑選項,將編譯器地址放入:
在這里插入圖片描述
然后再配置IntelliSense模式,IntelliSense是代碼補全工具,將其設置為與編譯器兼容的格式,例如這里是gcc-x64。
在這里插入圖片描述
接下來再配置自動補全的包含路徑:包含路徑就是#include文件所在的路徑,這里面默認有了一個workspaceFolder,代表當前目錄下的所有文件,如果使用的庫不在當前的工作目錄下則需要在這里手動添加進去。
在這里插入圖片描述
一般情況下,標準庫的文件編譯器是會自動去尋找的,但有時候標準庫文件會提示找不到庫,那么就需要在這里手動地把庫頭文件路徑包含進去了。具體查詢方式如下:

g++ -v -x c++ -E -

在這里插入圖片描述
將后面這幾行粘貼進去(注意去掉前面的空格)。
最后再設置一下C++標準:
在這里插入圖片描述
然后我們可以發現,.vs文件夾下多了個文件:c_cpp_properties.json

{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.22621.0","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "windows-gcc-x64","compilerPath": "\"D:\\mingw64\\bin\\g++.exe\""}],"version": 4
}

其實就是把我們在窗口內配置的信息轉成了json代碼。

task.json

當我們選擇了編譯器后(點擊一鍵運行),項目配置文件夾.vs下就會生成一個task.json文件。這個文件的內容如下:

{"tasks": [{"type": "cppbuild", "label": "C/C++: g++.exe 生成活動文件", #任務標簽(名字)"command": "D:\\mingw64\\bin\\g++.exe", "args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": { "kind": "build","isDefault": true },"detail": "調試器生成的任務。"}],"version": "2.0.0"
}

task.json文件主要是用來指導編譯過程的,其中很重要的兩條是:

"command": "D:\\mingw64\\bin\\g++.exe" //這條指定了用哪個編譯器。"args": [ //這條指定了編譯指令的參數"-fdiagnostics-color=always","-g", //啟用調試學習"${file}", //源文件名"-o", //輸出文件"${fileDirname}\\${fileBasenameNoExtension}.exe" //輸出文件名]

launch.json

launch.jsons是調試配置文件,位于.vscode隱藏文件夾下。生成調試配置文件launch.json的方法很簡單:打開vscode左邊欄的運行于調試即可創建。
在這里插入圖片描述
然后選擇使用的調試器即可完成創建:
在這里插入圖片描述
然后可以選擇一種調試器的模板:
在這里插入圖片描述
但是,這里我們需要對launch.json模板修改,代碼如下:

{// 使用 IntelliSense 了解相關屬性。 // 懸停以查看現有屬性的描述。// 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 啟動","type": "cppdbg","request": "launch","program": "輸入程序名稱,例如 ${workspaceFolder}/a.exe",//替換成task.json里生成的可執行文件名字"args": [], //傳遞給.exe的參數"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "/path/to/gdb","setupCommands": [{"description": "為 gdb 啟用整齊打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "將反匯編風格設置為 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]"preLaunchTask": "C/C++: gcc.exe 生成活動文件" //換成task.json的label名}]
}

各個參數的意義:
基礎參數?

name?
作用?: 調試配置的名稱,顯示在調試啟動下拉列表中。
示例?: “name”: “Python: Current File”
type?
作用?: 指定調試器類型,需與安裝的調試擴展匹配(如 python, node, go, cppdbg)。
示例?: “type”: “python”(使用 Python 擴展調試)
request?
作用?: 定義調試請求類型:
?launch: 啟動新程序進行調試(默認)。
?attach: 附加到已運行的進程。
?示例?: "request": "launch"
program?
作用?: 指定要調試的入口文件路徑(適用于編譯型或腳本語言)。
示例?: "program": "${file}"(調試當前打開的文件)

語言/環境相關參數?

args?
作用?: 傳遞給程序的命令行參數列表。
示例?:
&emsp;"args": ["--port", "8080", "--verbose"]
env?
作用?: 設置調試時的環境變量。
示例?:
"env": {"PYTHONPATH": "${workspaceFolder}/src", "DEBUG_MODE": "true"}
cwd?
作用?: 指定調試器的工作目錄(程序運行的根路徑)。
示例?: “cwd”: “${workspaceFolder}/bin”

高級調試配置?

preLaunchTask?
作用?: 調試前自動執行的任務(需在 tasks.json 中定義)。
任務名要和tasks.json里面的"label"值對應一致
console?
作用?: 控制調試控制臺類型:
internalConsole: VSCode 內置終端(默認)。
integratedTerminal: 使用 VSCode 集成終端。
externalTerminal: 打開外部系統終端。
示例?: “console”: “integratedTerminal”
stopOnEntry?
作用?: 是否在程序入口處自動暫停(用于逐行調試)。
示例?: “stopOnEntry”: true

幾個注意的點就是:

  1. program,改成與task.json中一致的
  2. preLaunchTask改成task.json的label值
    配置完成后即可開始程序的調試,例如打斷點,查看變量等。

總結&&彩蛋

?本篇文章目的在于走通流程,具體的內容例如json文件怎么寫,各個參數具體的含義還需要大家自己去查更多的資料。最后,留給大家一個彩蛋,這其實是一個vscode一鍵配置的程序,具體使用如視頻所示。我看了一下,真的確實很方便,希望能帶給大家幫助吧!

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

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

相關文章

PPT 轉高精度圖片 API 接口

PPT 轉高精度圖片 API 接口 文件處理 / 圖片處理&#xff0c;將 PPT 文件轉換為圖片序列。 1. 產品功能 支持將 PPT 文件轉換為高質量圖片序列&#xff1b;支持 .ppt 和 .pptx 格式&#xff1b;保持原始 PPT 的布局和樣式&#xff1b;轉換后的圖片支持永久訪問&#xff1b;全…

VSCode 抽風之 兩個conda環境同時在被激活

出現了神奇的(toolsZCH)(base) 提示符&#xff0c;如下圖所示&#xff1a; 原因大概是&#xff1a;conda 環境的雙重激活&#xff1a;可能是 conda 環境沒有被正確清理或初始化&#xff0c;導致 base 和 toolsZCH 同時被激活。 解決辦法就是 &#xff1a;conda deactivate 兩次…

git | 回退版本 并保存當前修改到stash,在進行整合。[git checkout | git stash 等方法 ]

目錄 一些常見命令&#xff1a; git 回退版本 一、臨時回退&#xff08;不會修改歷史&#xff0c;可隨時回到當前版本&#xff09; 方法1&#xff1a;git checkout HEAD~1 問題&#xff1a;處于 detached HEAD 狀態下提交的&#xff0c;無法直接 git push ? 選項 1&…

如何使用 Postman 進行接口測試?

使用 Postman 這一工具&#xff0c;可以輕松地進行接口測試。以下是一份簡單的使用教程&#xff0c;幫助你快速上手。 Postman 接口測試教程&#xff1a;詳細步驟及操作技巧

寫作軟件新體驗:讓文字創作更高效

一、開篇引入:寫作難題的破解之道 在當今信息爆炸的時代,寫作成為了我們生活和工作中不可或缺的一部分。然而,面對繁瑣的寫作任務,我們時常感到力不從心,甚至陷入創作的瓶頸。那么,有沒有一款軟件能夠幫助我們破解這一難題,讓文字創作變得更加高效和輕松呢?答案是肯定…

大模型思維鏈COT:Chain-of-Thought Prompting Elicits Reasoningin Large Language Models

一、TL&#xff1b;DR 探索了COT&#xff08;chain-of-thought prompting&#xff09;通過一系列的中間推理步驟來顯著的提升了LLM的復雜推理能力在三個大型語言模型上的實驗表明&#xff0c;思維鏈提示能夠提升模型在一系列算術、常識和符號推理任務上的表現解釋了一下為什么…

systemd-networkd的配置文件的優先級 筆記250325

systemd-networkd的配置文件的優先級 systemd-networkd的配置文件優先級規則如下&#xff1a; 1. 目錄優先級 配置文件按以下目錄順序加載&#xff08;優先級從高到低&#xff09;&#xff1a; /etc/systemd/network&#xff08;用戶自定義配置&#xff0c;最高優先級&#x…

詳細說明windows系統函數::SetUnhandledExceptionFilter(ExceptionFilter)

::SetUnhandledExceptionFilter(ExceptionFilter); 是 Windows 編程中用于設置頂層未處理異常過濾器的關鍵 API 調用。它屬于 Windows 結構化異常處理&#xff08;SEH, Structured Exception Handling&#xff09;機制的一部分&#xff0c;主要用于捕獲那些未被程序內部處理的異…

決策樹算法詳解:從西瓜分類到實戰應用

目錄 0. 引言 1. 決策樹是什么&#xff1f; 1.1 生活中的決策樹 1.2 專業版決策樹 2. 如何構建決策樹&#xff1f; 2.1 關鍵問題&#xff1a;選哪個特征先判斷&#xff1f; 2.1.1 信息熵&#xff08;數據混亂度&#xff09; 2.1.2 信息增益&#xff08;劃分后的整潔度提…

超融合服務器是什么

超融合服務器的定義與背景 超融合服務器&#xff08;Hyperconverged Infrastructure, HCI&#xff09;是一種通過軟件定義技術&#xff0c;將計算、存儲、網絡和虛擬化功能整合到單一硬件平臺中的IT基礎設施解決方案。其核心目標是通過資源的高度集成和統一管理&#xff0c;簡…

【網絡層協議】NAT技術內網穿透

IP地址數量限制 我們知道&#xff0c;IP地址&#xff08;IPv4&#xff09;是一個4字節32位的整數&#xff0c;那么一共只有2^32也就是接近43億個IP地址&#xff0c;而TCP/IP協議棧規定&#xff0c;每臺主機只能有一個IP地址&#xff0c;這就意味著&#xff0c;一共只有不到43億…

時隔多年,終于給它換了皮膚,并正式起了名字

時隔多年&#xff0c;終于更新了直播推流軟件UI&#xff0c;并正式命名為FlashEncoder。軟件仍使用MFC框架&#xff0c;重繪了所有用到的控件&#xff0c;可以有效保證軟件性能&#xff0c;也便于后續進一步優化。 下載地址&#xff1a;https://download.csdn.net/download/Xi…

代碼隨想錄第六十二天| Floyd 算法精講 A * 算法精講 (A star算法) 最短路算法總結篇

Floyd 算法精講 題目描述 小明希望在公園散步時找到從一個景點到另一個景點的最短路徑。給定公園的景點圖&#xff0c;包含 N 個景點和 M 條雙向道路&#xff0c;每條道路有已知的長度。小明有 Q 個觀景計劃&#xff0c;每個計劃包含一個起點和終點&#xff0c;求每個計劃的最…

如何避免測試環境不穩定導致的誤報

避免測試環境不穩定導致誤報的核心方法包括搭建獨立穩定的測試環境、使用環境監控工具、建立環境變更管理機制、定期維護更新測試環境以及提升團隊的環境管理意識。 其中&#xff0c;搭建獨立穩定的測試環境尤為關鍵。獨立的測試環境能有效隔離其他環境的干擾&#xff0c;保證測…

初級:I/O與NIO面試題深度剖析

一、引言 在Java開發中&#xff0c;I/O&#xff08;輸入/輸出&#xff09;操作是程序與外部設備&#xff08;如磁盤、網絡等&#xff09;進行數據交互的重要方式。傳統的I/O模型在處理大規模數據和高并發場景時存在一定的局限性&#xff0c;而NIO&#xff08;New I/O&#xff…

Axure RP9教程 :輪播圖(動態面板) | 頭部鎖定

文章目錄 引言I 輪播圖操作步驟在畫布中添加一個動態面板設置面板狀態II 頭部鎖定將頭部區域選中,右鍵組合或用Ctrl+G快捷鍵;將組合的頭部區域,右鍵創建動態面板;引言 動態面板的功能十分強大,比如:擁有獨立的內部坐標系,有多個狀態; Banner的案例中會用到動態面板多個…

超微服務器主板重置ipmi登錄密碼

超微服務器主板重置ipmi登錄密碼 超微服務器的ipmi登錄密碼不對&#xff0c;需要重置但是bios內并沒有找到可以設置的選項。 以下是解決辦法&#xff1a; 安裝IPMITOOL apt install ipmitool -y執行以下命令加載模塊&#xff1a; modprobe ipmi_watchdog modprobe ipmi_po…

藍橋杯第十屆 數的分解

題目描述 本題為填空題&#xff0c;只需要算出結果后&#xff0c;在代碼中使用輸出語句將所填結果輸出即可。 把 2019 分解成 3 個各不相同的正整數之和&#xff0c;并且要求每個正整數都不包含數字 2 和 4&#xff0c;一共有多少種不同的分解方法&#xff1f; 注意交換 3 個…

Docker入門篇4:查看容器資源、查看容器詳細信息、查看容器日志、查看容器內運行的進程

大家好我是木木&#xff0c;在當今快速發展的云計算與云原生時代&#xff0c;容器化技術蓬勃興起&#xff0c;Docker 作為實現容器化的主流工具之一&#xff0c;為開發者和運維人員帶來了極大的便捷 。下面我們一起開始入門第四篇&#xff1a;查看容器資源、查看容器詳細信息、…

基于數據挖掘的網絡入侵檢測關鍵技術研究

標題:基于數據挖掘的網絡入侵檢測關鍵技術研究 內容:1.摘要 隨著互聯網的迅速發展&#xff0c;網絡安全問題日益嚴峻&#xff0c;網絡入侵行為對個人、企業和國家的信息安全構成了巨大威脅。本文的目的是研究基于數據挖掘的網絡入侵檢測關鍵技術&#xff0c;以提高網絡入侵檢測…