私はc ++を学習している最中で、Mac用のビジュアルスタジオコードを使用しています。コードランナーを使用してプログラムを実行しています。私の問題は、変数宣言に「auto」などのc ++ 11から何かを使用すると、Visual Studioコードで次のような警告が表示されますが、XcodeまたはEclipseで実行しようとすると、表示されません。
warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
for(auto y: nstrVec)
これは、必要な場合のプログラムです。
#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>
#include <numeric>
#include <sstream>
int main(){
std::vector<std::string> nstrVec(10);
std::string str("I'm a string");
nstrVec[0] = str;
std::cout << str.at(0) << "\n";
std::cout << str.front() << " " << str.back() << "\n";
std::cout << "Length " << str.length() << "\n";
// copies all characters after the fourth
std::string str2(str, 4);
for(auto y: nstrVec)
if(y != "")
std::cout << y << "\n";
return 0;
}
そして、これはc_cpp_proprerties.jsonファイルです。
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"/System/Library/Frameworks/Kernel.framework/Versions/A/Headers"
],
"defines": [],
"macFrameworkPath": [
"/System/Library/Frameworks",
"/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
同じ問題がありましたが、set vscode-user-settings <>を使用して解決しました
"clang.cxxflags": ["-std=c++14"]
VSコード:
ファイル>>設定>>設定>>拡張
c_Cpp> Default:Cpp Standardドロップダウンメニューを検索します
それをc ++ 11に設定します
今日、このエラーが発生した理由を理解するために長い時間を費やしましたが、正確な答えがどこにあるのかわからなかったので、面倒を省くことができるように、ここに投稿することにしました。
コードランナーを使用している場合は、ユーザー設定を確認して設定します。
"code-runner.executorMap" : { "cpp" : "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt" }
関連するビットは「g ++ -std = c ++ 17」です。
これはもちろん、上記のダニエルのソリューションを使用してシェルでプログラムをコンパイルできますが、VScode +でコードランナーを使用してコンパイルすることはできません。
(私がしたように)この質問に答えて簡単な答えを見つける人は誰でも:
次のコンパイラコマンドは、プログラムをコンパイルする必要がありますmain.cpp
最新のC++標準(c ++ 17)を使用し、上記のような警告メッセージを取り除く必要があります。
g++ -std=c++17 -g main.cpp -o main
コメントで何度も言及されていますが、この質問には定期的に回答する必要があると思います。