網站首頁 編程語言 正文
引言
之前在配置VScode環境的時候,按照網上的文章配置,總是找不到頭文件,搜索解決方案,都是千篇一律,沒有說到重點。在此詳細解釋一下。
局部配置全局配置傻傻分不清楚
網上很多文章都在講一個配置文件c_cpp_properties.json
,但是有些人不知道什么原因是找不到這個配置文件的。在擴展面板中,點擊C++的設置進入的頁面其實是通用設置頁面,大概長這樣:
這里只能看到"在settings.json
中編輯"的選項,無論怎么寫,都不可能生效,因為真正的配置文件在c_cpp_properties.json
中。settings.json
文件中的都是全局的一些默認配置。比如說,我配置完之后是這樣的:
//全局的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", }
這樣的配置本身沒有錯,但是最關鍵的問題在于,如果之前已經用vscode打開過文件夾,并且在文件夾中自動生成了.vscode
配置文件夾,那么大概率會自動生產一個c_cpp_properties.json
配置文件,并且是不帶默認配置的,大概是這樣:
//.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
那么相當于只有這一行"${workspaceFolder}"
的配置生效,也就是只在當前工作目錄下查找頭文件,那能找到才怪咧。
因此,要特別注意,如果發現include頭文件出現問題,首先看一下.vscode
目錄下的配置是否正確,然后再去看全局的配置。
這種情況的解決方案很簡單,因為全局的default配置已經寫好了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}"
的效果,就是讓局部配置去調用全局配置中的默認選項,也就是全局settings.json
中的那些配置。
一些有幫助的信息
- 不要直接在sourceforge下載mingw64,很大概率你下載到的是源碼包,需要在特定環境下之后才能用,在源碼包里是找不到g++.exe之類的東西的,不要浪費時間直接去找網盤下編譯好的build。
- 解壓build之后,通常放在C盤根目錄下,然后找到系統高級設置,配置環境變量。要注意,如果配置的是系統環境變量而非用戶環境變量時,需要注銷后生效,不需要重啟電腦。
- 具體includePath是什么,在配置好環境變量之后,也就是CMD中輸入gcc -v可以看到正常輸出之后,在CMD中輸入gcc -v -E -x c++ -命令,就可以列出所有的include路徑,加上雙引號之后就可以copy到對應的json配置中了。
總結
原文鏈接:https://blog.csdn.net/wbvalid/article/details/115001149
相關推薦
- 2022-06-25 JQuery選擇器用法詳解_jquery
- 2022-06-02 Apache?Hudi基于華米科技應用湖倉一體化改造_服務器其它
- 2022-04-18 Python裝飾器實現函數運行時間的計算_python
- 2024-04-04 mybatis-config.xml的配置
- 2022-07-24 Python使用apscheduler模塊設置定時任務的實現_python
- 2022-10-16 QT網絡通信TCP客戶端實現詳解_C 語言
- 2023-01-20 python如何實現完全數_python
- 2024-03-15 Gitea Webhook報錯 webhook.ALLOWED_HOST_LIST setting
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支