C++小白,我在mac上使用VScode學習C++,正在學習《21天學通C++》,在第26頁提到了C++14可以用單引號表示組塊分割符,但在VScode里並不支持這樣

#include&
using namespace std;
int main(){
int var1 = 70000;
cout &

VScode運行上面代碼時提示

tempCodeRunnerFile.cpp:14:18: warning: missing terminating character [-Winvalid-pp-token]
int var1 = 70000;
^
tempCodeRunnerFile.cpp:14:18: error: expected ; at end of declaration
int var1 = 70000;
^
;
1 warning and 1 error generated.

即使在設置中將C_Cpp ? Default:Cpp Standard改為C++ 14或17問題仍然出現。

而CLion可以運行這段代碼。

VScode 只安裝了官方C++插件, C/C++ Clang Command Adapter, Code Runner. Mac上安了Xcode和CLion,問下這個問題該怎麼解決呢?

添加一些最近的探索發現的問題,首先我在用terminal編譯時犯了一個錯誤,事實上用terminal是可以編譯上面的代碼的,是我在寫的時候粗心少了分號,那麼現在的問題就變成了,上哪裡可以更改VScode的C++版本?

又及,我在準備放棄Vscode之後選擇使用了Sublime Text,Sublime Text的默認C++ single file編譯方法也有同樣的問題,但我按照網上的操作用了新的編譯設置便可以編譯C++14了,新的編譯設置如下:

{
"cmd": ["g++", "${file}", "-std=c++17", "-stdlib=libc++", "-o", "${file_path}/${file_base_name}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++, source.cxx, source.cc",

"variants":
[
{
"name": "Run",
"cmd": ["bash", "-c", "g++ ${file} -std=c++17 -stdlib=libc++ -o ${file_path}/${file_base_name} ${file_path}/${file_base_name}"]
}
]
}

我覺得把上面的代碼複製粘貼到VScode里就能讓VScode實現同樣的目的,但我試過了cpp_config和task.json都還是不行,所以可以請問如何解決這個問題呢?


換一本書。21天絕對不可能學通C++


建議在Terminal中直接使用 clang++ ./main.cpp -std=c++14進行編譯。

如果不可以,看看clang++的版本,可能需要更新。

如果可以,說明VSCode的相關設置有問題。


在一番探索後,我終於發現了問題,寫出解決方案,造福後人。

該問題處在vscode所帶的Code Runner插件上,感謝 @ctuu 的回答:

Visual Studio Code 如何編寫運行 C、C++ 程序??

www.zhihu.com圖標

解決方法:在設置中找到"code-runner.executorMap: " ,輸入"cd $dir g++ $fileName -o $fileNameWithoutExt -std=c++17 $dir$fileNameWithoutExt"即可。

該設置為默認設置加中間加入了編譯標準為C++17。真是好一通折騰啊。


代碼編譯和代碼高亮是兩回事

設置里設置的是代碼高亮,是編輯器的著色策略

報錯的是編譯器。

去設置編譯器的編譯標誌位吧


C_Cpp ? Default:Cpp Standard

這個只是給intellisense用的,編譯時開啟C++14要自行設置編譯參數-std=c++14。

CLion的話可能編譯時默認設置了std參數。

如果說加了參數還沒法編譯,那就是編譯器不支持C++14的環境了。mac自帶的clang是魔改過的,版本號和正常clang不一樣,就很麻煩……


C++ programming with Visual Studio Code?

code.visualstudio.com圖標

文檔里有說怎麼配啊。還有sample,按sample里的配置,然後args里加一個 -std=c++17 就行了


沒遇到過這種問題,看下你的clang版本是否支持C++14。

建議你換本書,一點基礎都沒有的看《C++ Primer Plus》,或者直接看《C++ Primer》


推薦閱讀:
相关文章