VScode中C++頭文件問題的終極解決方法詳析
引言
之前在配置VScode環(huán)境的時(shí)候,按照網(wǎng)上的文章配置,總是找不到頭文件,搜索解決方案,都是千篇一律,沒有說到重點(diǎn)。在此詳細(xì)解釋一下。
局部配置全局配置傻傻分不清楚
網(wǎng)上很多文章都在講一個(gè)配置文件c_cpp_properties.json
,但是有些人不知道什么原因是找不到這個(gè)配置文件的。在擴(kuò)展面板中,點(diǎn)擊C++的設(shè)置進(jìn)入的頁面其實(shí)是通用設(shè)置頁面,大概長這樣:
這里只能看到"在settings.json
中編輯"的選項(xiàng),無論怎么寫,都不可能生效,因?yàn)檎嬲呐渲梦募?code>c_cpp_properties.json中。settings.json
文件中的都是全局的一些默認(rèn)配置。比如說,我配置完之后是這樣的:
//全局的settings.json { "C_Cpp.default.compilerPath": "C:/MinGW/bin/g++.exe", "C_Cpp.default.includePath": [ "${workspaceFolder}/**", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include" ], "C_Cpp.default.intelliSenseMode": "linux-gcc-x64", }
這樣的配置本身沒有錯(cuò),但是最關(guān)鍵的問題在于,如果之前已經(jīng)用vscode打開過文件夾,并且在文件夾中自動生成了.vscode
配置文件夾,那么大概率會自動生產(chǎn)一個(gè)c_cpp_properties.json
配置文件,并且是不帶默認(rèn)配置的,大概是這樣:
//.vscode文件夾局部的配置c_cpp_properties.json { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**" //問題就出在這一行 ], "defines": [], "compilerPath": "C:/MinGW/bin/g++.exe", "cStandard": "c11", "cppStandard": "c++11", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
如果.vscode
局部的配置文件沒有顯示的聲明c_cpp插件的includePath
那么相當(dāng)于只有這一行"${workspaceFolder}"
的配置生效,也就是只在當(dāng)前工作目錄下查找頭文件,那能找到才怪咧。
因此,要特別注意,如果發(fā)現(xiàn)include頭文件出現(xiàn)問題,首先看一下.vscode
目錄下的配置是否正確,然后再去看全局的配置。
這種情況的解決方案很簡單,因?yàn)槿值膁efault配置已經(jīng)寫好了include的路徑,只需要在局部的配置這兒增加一行"${default}"
即可:
//.vscode文件夾局部的配置c_cpp_properties.json { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "${default}" //只需要加這一行,就是這么簡單 ], "defines": [], "compilerPath": "C:/MinGW/bin/g++.exe", "cStandard": "c11", "cppStandard": "c++11", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
加"${default}"
的效果,就是讓局部配置去調(diào)用全局配置中的默認(rèn)選項(xiàng),也就是全局settings.json
中的那些配置。
一些有幫助的信息
- 不要直接在sourceforge下載mingw64,很大概率你下載到的是源碼包,需要在特定環(huán)境下之后才能用,在源碼包里是找不到g++.exe之類的東西的,不要浪費(fèi)時(shí)間直接去找網(wǎng)盤下編譯好的build。
- 解壓build之后,通常放在C盤根目錄下,然后找到系統(tǒng)高級設(shè)置,配置環(huán)境變量。要注意,如果配置的是系統(tǒng)環(huán)境變量而非用戶環(huán)境變量時(shí),需要注銷后生效,不需要重啟電腦。
- 具體includePath是什么,在配置好環(huán)境變量之后,也就是CMD中輸入gcc -v可以看到正常輸出之后,在CMD中輸入gcc -v -E -x c++ -命令,就可以列出所有的include路徑,加上雙引號之后就可以copy到對應(yīng)的json配置中了。
總結(jié)
到此這篇關(guān)于VScode中C++頭文件問題終極解決方法的文章就介紹到這了,更多相關(guān)VScode C++頭文件問題解決內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
函數(shù)外初始化與函數(shù)內(nèi)初始化詳細(xì)解析
函數(shù)內(nèi)初始化:bool FillStr(char *&szDst, int nSize);第一個(gè)參數(shù)中的&一定不能少,這是因?yàn)樵诤瘮?shù)外部我們只聲明了這個(gè)指針,具體這個(gè)指針指向內(nèi)存中的哪個(gè)地址我們并不知道,所以&是為了說明傳遞的是這個(gè)指針的引用,那么在函數(shù)內(nèi)初始化后這個(gè)指針的地址也就是外面指針的地址了2013-09-09OpenCV提取圖像中圓線上的數(shù)據(jù)具體流程
在對圖像進(jìn)行處理時(shí),經(jīng)常會要提取出圖像中某條直線、圓線或者ROI區(qū)域內(nèi)的感興趣數(shù)據(jù),進(jìn)行重點(diǎn)關(guān)注。本文主要介紹了利用OpenCV獲取圖像中圓線上的數(shù)據(jù),需要的可以參考一下2021-11-11詳解如何在code block創(chuàng)建一個(gè)C語言的項(xiàng)目
這篇文章主要介紹了詳解如何在code block創(chuàng)建一個(gè)C語言的項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12C語言中數(shù)據(jù)是如何存儲在內(nèi)存中的
使用編程語言進(jìn)行編程時(shí),需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會在內(nèi)存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲什么2022-04-04