ctrl + option + n で以下のコードを実行したときに警告が表示されます。コードの内容は1から4までの数字を拡張for文で表示するという単純なものです。
#include <iostream>
using namespace std;
int main()
{
int numbers[] = {1, 2, 3, 4};
for (int number : numbers)
cout << number << endl;
}
$ g++ test.cpp && ./a.out
test.cpp:8:21: warning: range-based for loop is a C++11 extension [-Wc++11-extensions]
for (int number : numbers)
^
1 warning generated.
1
2
3
4
「拡張for文はC++11からの機能だよ〜」と警告してくれています。警告がでるだけで問題なく使えますけども、毎回警告が表示されるのはイヤです。
調べたところ、解決方法が2つほど見つかりました。
解決方法1:–std=c++11 というオプションを付けてコードを実行する
1つ目の方法は引数に–std=c++11をつけることです。
以下のコードを見ると分かるように警告が消えます。
g++ –std=c++14 test.cpp && ./a.out
1
2
3
4
僕はこの方法を知ってからしばらくctrl + option + nでコードを実行するのをやめて毎回g++ –std=c++11 …..と打ち込んでいました。でも流石にめんどくさくなってきたのでctrl + option + nでc++11が実行できる方法を探しました。
解決方法2:settings.jsonのcode-runner.executorMapをいじる
command + shift + p でsettings.jsonを開きます。すると以下のような箇所が見つかるかと思います。見つからなかったら、VSCodeのExtensionで「Code Runner」をインストールしましょう。
“code-runner.executorMap”: {
“cpp”: “cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt”,
}
このg++の後ろに–std=c++11を追加してあげます.
“code-runner.executorMap”: {
“cpp”: “cd $dir && g++ –std=11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt”,
}
これでctrl + option + nでc++11が警告なしに使えるようになります。
参考:https://stackoverflow.com/questions/53995830/compiling-c11-in-visual-studio-code