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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C++

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

Q&A

2回答

2881閲覧

C++の環境構築に手こずってます vscode

退会済みユーザー

退会済みユーザー

総合スコア0

C++

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

0グッド

1クリップ

投稿2018/06/01 16:03

編集2018/06/03 13:38

こちらを参考にしました

これを順調に行っていくとまず

vscodeのユーザー設定で

"clang.executable": "clang++.exe" "clang.cxxflags": [ "-std=c++11" ]

のところは
"clang.cxxflags"に赤線がかれて注意されています
しかし実行する際にはこれといったエラーが出ないので続けていくと

インクルードパスが上手く行きません

c++

1#include <string.h> 2#include <cstdio> 3#include <climits> 4#include <cstdlib> 5#include <cmath> 6#include <iostream> 7#include <string> 8#include <vector> 9#include <map> 10#include <set> 11#include <bitset> 12#include <list> 13#include <stack> 14#include <queue> 15#include <algorithm> 16#include <numeric> 17#include <sstream> 18using namespace std; 19 20int main(){ 21 printf("hoge"); 22}

以上のようによく使うincludeを並べ
c_cpp_properties.jsonを

{ "name": "Win32", "intelliSenseMode": "clang-x64", "includePath": [ "${workspaceRoot}", "C:/MinGW/lib/gcc/mingw32/6.3.0/include/c++", "C:/MinGW/lib/gcc/mingw32/6.3.0/include/c++/mingw32", "C:/MinGW/lib/gcc/mingw32/6.3.0/include/c++/backward", "C:/MinGW/lib/gcc/mingw32/6.3.0/include", "C:/MinGW/include", "C:/MinGW/lib/gcc/mingw32/6.3.0/include-fixed" ], "defines": [ "_DEBUG", "UNICODE", "__GNUC__=6", "__cdecl=__attribute__((__cdecl__))" ], "browse": { "path": [ "C:/MinGW/lib/gcc/mingw32/6.3.0/include", "C:/MinGW/lib/gcc/mingw32/6.3.0/include-fixed", "C:/MinGW/include/*", "C:/MinGW/include" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" }, "cStandard": "c11", "cppStandard": "c++17" } ], "version": 4

このように設定したのですがincludeしたいのに全部赤線がひかれてしまいます

MinGWの保存先はデフォルトで行ったのでパスは合っているはずなのですが、認識してくれません
今までcをこのインクルードパスでできていたのですが
c++を使うために最初のサイトを参考にLLVM-clangのインストールを行ったのですができません

しかしve
とかうつと補間でvectorが表示されます
その詳細を見るとFile: stl_vector.hとかになっています

追記

一度c_cpp_properties.jsonを消して緑波線の電球マークを押し、新しく作成し
includePathの部分に同じパスをコピペすると
一番上の#include <string.h>だけに赤線が引かれ
'string.h' file not found
とエラーが出ます
そのincludeの部分をコメントあるとすると次の#include <cstdio>
に赤線が引かれ、結果的にすべておこられてしまいます

browseの項目にもpathがありますがこれはどういう項目なんでしょうか

"browse": { "path": [ "${workspaceFolder}" ], "limitSymbolsToIncludedHeaders": true },

実行例

c++

1#include <string.h> 2#include <cstdio> 3#include <climits> 4#include <cstdlib> 5#include <cmath> 6#include <iostream> 7#include <string> 8#include <vector> 9#include <map> 10#include <set> 11#include <bitset> 12#include <list> 13#include <stack> 14#include <queue> 15#include <algorithm> 16#include <numeric> 17#include <sstream> 18#define rep(i, n) for(int i = 0; i < (int)(n); i++) 19using namespace std; 20 21int main(){ 22 printf("hoge"); 23 int x; 24 cin >> x; 25 vector<int> vc; 26 vc.push_back(x); 27 cout << vc[0] << endl; 28 return 0; 29}

このように書くとコンパイルは通るんですよね
しかし実行するとhogeもでず、何も出力されず実行が終わります。

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

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

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

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

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

pepperleaf

2018/06/03 13:27

まず、コマンドラインでの実行ができているのでしょうか?
退会済みユーザー

退会済みユーザー

2018/06/03 13:33

はい。私もよくわからないのですが、g++でコンパイルはできました。質問文の例ではprintfにも赤波線が引かれますがhogeが出力されます。しかしvetorを使ったりすると変わります。質問文に追記します
pepperleaf

2018/06/03 13:40

参考サイトを見ると、Visual Stdio (not VS code) が入ってないと、LLVMのインストールが失敗するとの記述もありますが、関係あるでしょうか? 自分の環境は既に入っているので確認無理そうです。
退会済みユーザー

退会済みユーザー

2018/06/03 15:58

わかりません....実際私はvisual stdioは入れていませんがインストール自体はできました。サイトによるとvs互換したいならとかいてあるんで関係ないっぽいですよね...?
guest

回答2

0

"clang.executable": "clang++.exe", <<コンマが抜けている、あとフルパスの必要があるんでは "clang.cxxflags": [ "-std=c++11" ]

インクルードパスについては、こちらの環境ではちゃんと動いてるようでした


んで、赤線引かれる、というのはあくまでJSON文法で誤りがあるから、であって、パスが実在するかどうかはみてないようです。
”がきちんと閉じられていない、カンマが付いていない、あるいは余計なカンマが付いている、などなどチェックしてみては。


追記

JSON

1{ 2 "configurations": [ 3 { 4 "name": "GCC", 5 "browse": { 6 "path": [ 7 "${workspaceFolder}/include", 8 "${workspaceFolder}", 9 "C:/MinGW/lib/gcc/mingw32/6.3.0/include", 10 "C:/MinGW/lib/gcc/mingw32/6.3.0/include/**", 11 "C:/MinGW/include", 12 "C:/MinGW/include/**" 13 ], 14 "limitSymbolsToIncludedHeaders": true 15 }, 16 "includePath": [ 17 "${workspaceFolder}/include", 18 "${workspaceFolder}", 19 "C:/MinGW/lib/gcc/mingw32/6.3.0/include", 20 "C:/MinGW/lib/gcc/mingw32/6.3.0/include/**", 21 "C:/MinGW/include", 22 "C:/MinGW/include/**" 23 ], 24 "defines": [ 25 "GCC" 26 ], 27 "cStandard": "c99", 28 "cppStandard": "c++17", 29 "intelliSenseMode": "msvc-x64" 30 } 31 ], 32 "version": 4 33}

あくまでこちらでの環境ですが、こういう設定でやってたりします。参考になるでしょうか
#間に合わせ的な記述っぽいですが

投稿2018/06/01 23:47

編集2018/06/03 14:00
y_waiwai

総合スコア87747

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

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

退会済みユーザー

退会済みユーザー

2018/06/02 02:49

回答ありがとうございます clangの方はおっしゃる通りコンマをつけフルパスに変更しました。 赤線も消えました しかインクルードパスは緑線で電球マークがでて設定しろと言われてしまいます そちらの環境で動くのならパスの設定は正しいですよね
y_waiwai

2018/06/02 02:57

こちらでは環境が違うので、動くと言ってもエラーが出ない、というだけです パスの設定はこちらには存在しないですが、エラーは出てませんし、実際のラベルの解決にしても、存在しないパスは無視されてるように見えます #デタラメのパスが混入していてもインテリセンスもふつーに動作している そちらとはプラグインなどの環境が違うと思いますが、参考までに
guest

0

試しにc_cpp_properties.json"browse"の項目を消したらどうなるだろう・・・

投稿2018/06/02 10:59

yumetodo

総合スコア5850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問