【Warningとサヨナラ】ショートカットキーありでC++11をVSCodeで実行する方法【MacOS】

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

Copied title and URL