thinkphp做網(wǎng)站好嗎/中國seo高手排行榜
前提
- 安裝 Visual Studio Code
- VSCode 中安裝 C/C++擴(kuò)展
- 確保 Clang 已經(jīng)安裝(在終端中輸入命令:
clang --version
?來確認(rèn)是否安裝) - 未安裝,在命令行執(zhí)行xcode-select --install 命令,會自行安裝,安裝文件有點(diǎn)大
?
創(chuàng)建你的第一個 HelloWorld 程序
創(chuàng)建工作區(qū)(WorkSpace)
打開 VSCode, 創(chuàng)建一個 project 文件夾。
現(xiàn)在,project 就是我們的工作區(qū)(WorkSpace)了。當(dāng)我們繼續(xù)做完本教程的配置,這個工作區(qū)中將出現(xiàn)一個子文件夾.vscode,包含三個文件。
● tasks.json(編譯選項(xiàng)設(shè)置)
?
創(chuàng)建 HelloWorld 的源代碼文件
在 project 文件夾下創(chuàng)建一個 hello.cpp 文件
在 hello.cpp中粘貼以下內(nèi)容
#include <iostream>using namespace std;int main(){cout << "Hello World" << endl;
}
Command+S(?S)保存該文件,
運(yùn)行 HelloWorld(compile and run)
注意:C++擴(kuò)展是使用機(jī)器上已安裝的 C++編譯器來生成程序,所以在運(yùn)行/調(diào)試 hello.cpp 前,請確保你已經(jīng)符合了文章開頭的前提,安裝好了 C++編譯器。
打開 hello.cpp,這將它將成為 active file,可以被用于生成和調(diào)試
點(diǎn)擊圖中右上角的按鈕,選擇 Run C/C++ File
在跳出的選項(xiàng)中,選擇C/C++: clang++ build and debug active file。
只有在第一次運(yùn)行 hello.cpp 時才需要做這個選擇。選擇后,.vscode 文件夾中出現(xiàn)了一個新文件tasks.json,我們選擇的編譯器配置將作為默認(rèn)設(shè)置。
編譯成功后,程序的輸出將顯示在下方的 DEBUG CONSOLE
至此,我們已經(jīng)成功地運(yùn)行了 VS Code 上的第一個 C++程序!
??
幾大主流 C++ 編譯器(ICC / GCC / Clang / VC++)
gcc/g++ 和 clang/clang++ 都是 Linux 下常用的 C/C++ 編譯器。gcc 是 GNU 親兒子,Ubuntu 等常用發(fā)行版標(biāo)配。clang 是后起之秀,配合 llvm,以優(yōu)秀的前端聞名于世,現(xiàn)在已經(jīng)是 Mac(XCode) 的默認(rèn)編譯器,微軟等大公司都在往上靠,前景一片光明。知乎上對幾個主流編譯器的評價:
在標(biāo)準(zhǔn)支持方面,clang > g++ > vc > icc。從實(shí)際使用來看,非常取決于平臺。比如win上vc最好,osx上clang最好,等。其他特點(diǎn)還有icc編譯出來的東西在intel cpu上快。
clang/g++需要注意的是,他們的編譯器對標(biāo)準(zhǔn)支持很好,但庫的支持嚴(yán)重不行。以至于如果你要C++11/C++14,還是會打折扣的。另外,clang在win上簡直是沒有見過更屎的。
對于vc來說,編譯速度這幾代在一直提高,內(nèi)存占用從vc12開始有明顯改進(jìn),最明顯的是Variadic template。還有內(nèi)置的代碼靜態(tài)分析,在實(shí)際中很有用。vc14的靜態(tài)分析不在每次載入一個ie(對,以前每分析一個.cpp,就載入一次ie!),速度快了相當(dāng)多。
對我自己而言,優(yōu)先級是clang>g++>msvc。
注:GNU是一個操作系統(tǒng),其內(nèi)容軟件完全以GPL方式發(fā)布。這個操作系統(tǒng)是GNU計(jì)劃的主要目標(biāo),名稱來自GNU's Not Unix!的遞歸縮寫,因?yàn)?em>GNU的設(shè)計(jì)類似Unix,但它不包含具著作權(quán)的Unix代碼。GNU的創(chuàng)始人,理查德·馬修·斯托曼,將GNU視為“達(dá)成社會目的技術(shù)方法”。
?
修改 tasks.json
修改了文件組織形式后,存儲了編譯配置的 tasks.json 也需要做對應(yīng)修改。
第一次編譯運(yùn)行 hello.cpp 時,我的機(jī)器上生成的?tasks.json
?如下:
{"tasks": [{"type": "cppbuild","label": "C/C++: clang++ build active file","command": "/usr/bin/clang++","args": ["-fcolor-diagnostics","-fansi-escape-codes","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "Task generated by Debugger."}],"version": "2.0.0"
}
我們做如下兩個修改:
工程中往往需要一次性編譯選定路徑下的所有 cpp 文件。對應(yīng)的,把"args"中的:"${file}"改為"${fileDirname}/*.cpp"
我們希望把編譯出的文件統(tǒng)一放置在 target 文件夾下。對應(yīng)的,把"args"中的"${fileDirname}/${fileBasenameNoExtension}"改為"${workspaceFolder}/target/${fileBasenameNoExtension}"
修改工程文件結(jié)構(gòu)
增加三個子文件夾?include
、src
、target
,并把 hello.cpp 移動到 src 目錄下。
然后我們做下測試,看看修改后的工作區(qū)可否正常編譯運(yùn)行 hello.cpp
驗(yàn)證配置的正確性
在 include 中創(chuàng)建 print.h,粘貼如下內(nèi)容:
#include <iostream>
#include <vector>
#include <string>
using namespace std;void printMessage(vector<string>& msg);
?在 src 中創(chuàng)建 print.cpp,粘貼如下內(nèi)容:
#include "../include/print.h"void printMessage(vector<string> &msg)
{for (int i = 0; i < msg.size(); i ++){cout << msg[i] << " ";}
}
修改 src 下的 hello.cpp,粘貼如下內(nèi)容:
#include "../include/print.h"int main(){vector<string> msg;msg.push_back("Hello"); msg.push_back("World");printMessage(msg);
}
?
在 hello.cpp 中點(diǎn)擊右上角的 run 按鈕,可以看到也成功運(yùn)行了(這說明我們實(shí)現(xiàn)了一次性編譯多個 cpp 文件),而且目標(biāo)文件生成到了 target 下。
?
cin命令無法輸入
解決方法
(有多種解決方法,這里選擇我認(rèn)為最易于進(jìn)行的方法)
Step1:下載相關(guān)插件(這一步簡單帶過)
安裝CodeLLDB的擴(kuò)展插件。
Step2:生成可執(zhí)行文件
直接點(diǎn)擊vscode右上角的運(yùn)行按鈕。
?
在命令行就可以輸入了。
debug調(diào)試仍然不行需要修改配置
調(diào)試(修改launch.json
文件)
可以看到在當(dāng)前目錄下多了.vscode
文件夾,并且自動創(chuàng)建了launch.json
文件。(這個時候直接進(jìn)行調(diào)試會報錯/仍然無法處理輸入問題)
這里我們需要修改兩個地方:
1、使用集成終端來運(yùn)行和調(diào)試程序:增加 “terminal”: “integrated”, 如果type不是就改為lldb,例:"type":"lldb"
2、運(yùn)行當(dāng)前文件所在目錄下的同名可執(zhí)行文件:修改program屬性為:“${workspaceFolder}/helloworld” 網(wǎng)上${fileBasenameNoExtension}是不行的,直接報錯
至此,修改完成。
先運(yùn)行Run Code,然后運(yùn)行《運(yùn)行調(diào)試c/c++文件》,再調(diào)試就可以輸入了。不能直接點(diǎn)擊《運(yùn)行調(diào)試c/c++文件》,直接點(diǎn)擊依然沒有輸入的地方。
codeLLdb插件安裝不了的解決方法
codeLLdb下載地址
打開vscode后選擇 擴(kuò)展->視圖和更多操作->從VSIX安裝