質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

7040閲覧

VscodeでC++のバージョンをc++14からc++20に変更したい

yuki_nam

総合スコア28

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/06/10 09:36

編集2022/06/10 10:50

前提

Vscodeでc++のバージョンを変更したいです。下記のコードでc++のバージョンを確認したところ自分の環境ではc++のバージョンはc++14でした。
また、std::gcdやstd::lcmも認識されていないことを確認したため間違いないです。私は普段Run codeを用いてc++のコードのコンパイルを行っています。

実現したいこと

毎回コンパイルする際にコマンドをいちいち打たずに今まで通りRun codeを用いて出来ればc++20で実行できるようにしたいです。

c++のバージョンを確認したコード

C++

1#include<bits/stdc++.h> 2#define rep(i, n) for (int i = 0; i < (int)(n); i++) 3#define repi(i,a,b) for(int i = a; i <= (int)(b); i++) 4typedef long long ll; 5using namespace std; 6 7int main(){ 8 9long version = __cplusplus; 10std::cout << "C++ Version : " << version << "\n"; 11 12 13 14 15 return 0; 16}

結果

C++ Version : 201402

上は調べたところc++14を表していました。c++20である場合、202002と出るようです。

試したこと

様々なサイトを調べて色々c_cpp_properties.jsonをいじったりしましたがエラーが出てしまったりしてしまいバージョン変更をすることができませんでした。

c_cpp_properties.json

{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "windowsSdkVersion": "10.0.19041.0", "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe", "intelliSenseMode": "windows-msvc-x64", "cppStandard": "c++20", "cStandard": "c17" } ], "version": 4 }

settings.json

{ "latex-workshop.latex.recipes": [ { "name": "make_ptex2pdf", "tools": [ "ptex2pdf", ] } ], "latex-workshop.latex.tools": [ { "name": "ptex2pdf", "command": "ptex2pdf", "args": [ "-interaction=nonstopmode", "-l", "-ot", "-kanji=utf8 -synctex=1", "%DOC%" ] } ], "latex-workshop.view.pdf.viewer": "tab", "workbench.statusBar.visible": true, "editor.renderControlCharacters": true, "files.autoGuessEncoding": true, "code-runner.runInTerminal": true, "workbench.colorCustomizations": { }, "terminal.integrated.enableMultiLinePasteWarning": false, "remote.SSH.remotePlatform": { "blue31.ced.cei.uec.ac.jp": "linux", "sol": "linux" }, "csharp.suppressDotnetInstallWarning": true, "C_Cpp.default.cppStandard": "c++17", "C_Cpp.default.cStandard": "c17", "code-runner.clearPreviousOutput": true, "code-runner.executorMapByGlob": { "pom.xml": "cd $dir && mvn clean package" }, "code-runner.executorMapByFileExtension": { ".vb": "cd $dir && vbc /nologo $fileName && $dir$fileNameWithoutExt", ".vbs": "cscript //Nologo", ".scala": "scala", ".jl": "julia", ".cr": "crystal", ".ml": "ocaml", ".exs": "elixir", ".hx": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt", ".rkt": "racket", ".scm": "csi -script", ".ahk": "autohotkey", ".au3": "autoit3", ".kt": "cd $dir && kotlinc $fileName -include-runtime -d $fileNameWithoutExt.jar && java -jar $fileNameWithoutExt.jar", ".kts": "kotlinc -script", ".dart": "dart", ".pas": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt", ".pp": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt", ".d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt", ".hs": "runhaskell", ".nim": "nim compile --verbosity:0 --hints:off --run", ".csproj": "dotnet run --project", ".fsproj": "dotnet run --project", ".lisp": "sbcl --script", ".kit": "kitc --run", ".v": "v run", ".vsh": "v run", ".sass": "sass --style expanded", ".cu": "cd $dir && nvcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", ".ring": "ring" }, "code-runner.executorMap": { "javascript": "node", "java": "cd $dir && javac $fileName && java $fileNameWithoutExt", "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "php": "php", "python": "python -u", "perl": "perl", "perl6": "perl6", "ruby": "ruby", "go": "go run", "lua": "lua", "groovy": "groovy", "powershell": "powershell -ExecutionPolicy ByPass -File", "bat": "cmd /c", "shellscript": "bash", "fsharp": "fsi", "csharp": "scriptcs", "vbscript": "cscript //Nologo", "typescript": "ts-node", "coffeescript": "coffee", "scala": "scala", "swift": "swift", "julia": "julia", "crystal": "crystal", "ocaml": "ocaml", "r": "Rscript", "applescript": "osascript", "clojure": "lein exec", "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt", "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt", "racket": "racket", "scheme": "csi -script", "ahk": "autohotkey", "autoit": "autoit3", "dart": "dart", "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt", "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt", "haskell": "runhaskell", "nim": "nim compile --verbosity:0 --hints:off --run", "lisp": "sbcl --script", "kit": "kitc --run", "v": "v run", "sass": "sass --style expanded", "scss": "scss --style expanded", "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css", "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt" }, }

補足

何か更に必要な情報がございましたらお教え下さると幸いです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki_nam

2022/06/10 10:02

つまりコンパイルをrun codeに任している時点でバージョンの変更は不可能ということでしょうか?
Zuishin

2022/06/10 10:10 編集

なぜリンク先を読まない人が増えたんだろう。
yuki_nam

2022/06/10 10:13

いいえ、まずすぐに読みましたが私みたいな初学者にはどう変えればよいのか理解に時間がかかるんですよ。読んでいないみたいな浅はかな返信をしてしまいすみませんでした。
yuki_nam

2022/06/10 10:14

リンク先を読んでいますが正直visual studioの方の操作が慣れないのもあり中々難しいです。
Bull

2022/06/10 10:43

ソースコードを見ると gcc (g++) でコンパイルしているようですが、開発環境 (OSとコンパイラ) はなんでしょうか? Run Code (Code Runner) でコンパイル・実行しているのであれば、"settings.json" の内容も補足して頂けませんか? 質問は修正できますのでここに書かないで、質問に追記して下さい。
yuki_nam

2022/06/10 10:50 編集

申し訳ありません。ただいま追記いたします。使用OSはWindowsです。settings.jsonの内容は質問ページに追記いたします。
yuki_nam

2022/06/10 10:47

ただいまVisual studioの方でのC++のバージョンを上記のリンクに従って変更しvisual studio上で同じくc++のバージョンを確認するコードを実行したところc++20になっていることを確認しました。しかしvscodeの方は変わらずc++14のままでした。
Bull

2022/06/10 11:58

VScode と Visual Studio は全くの別物ですので、Visual Studio のほうを変更しても、VScode には反映しませんね。 VScode では g++ でコンパイルしているのですよね。 "settings.json" の "code-runner.executorMap" の "cpp" を次のように変更してみて下さい。 "cpp": "cd $dir && g++ $fileName -std=c++20 -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
yuki_nam

2022/06/10 12:02

返信ありがとうございます。ただいま家を出てしまったため帰りましたら試してみて再度返信致します。ありがとうございます。
yuki_nam

2022/06/10 15:52

g++.exe: error: unrecognized command line option '-std=c++20'; did you mean '-std=c++2a'? このようなエラーが出てしまいコンパイルできませんでした。
yuki_nam

2022/06/10 15:54

ちなみにc++20のところをc++17にしたところc++のバージョンがc++17に変わりました。エラーなどは出ませんでした。
yuki_nam

2022/06/10 16:04

20のところを2aに変えたらc++20に変更することができました。皆様ご協力ありがとうございました。
guest

回答1

0

自己解決

stttings.jsonのcppの項目を

"cpp": "cd $dir && g++ $fileName -std=c++2a -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

のように書き換えた。

投稿2022/06/10 16:05

yuki_nam

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問