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

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

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

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

Q&A

解決済

VSCodeのincludeエラーを直したい

namespace_nqiiv
namespace_nqiiv

総合スコア5

C++

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

2回答

1グッド

1クリップ

31677閲覧

投稿2020/02/26 10:46

前提・実現したいこと

C++を学習しています。VSCodeでC++のプログラムを書いているのですが、includeエラーが消えません。消えなくてもコンパイルは普通に通りますし正常に実行できるのですが、エラーが消えないのは気になるので質問させていただきました。どなたかご教示いただければと思います。

該当のソースコード

C++

1#include <iostream>

試したこと

まずこのようなエラーメッセージが出ました。

#include エラーが検出されました。includePath を更新してください。この翻訳単位 (ファイル名.cpp) では、波線が無効になっています。C/C++(1696) ソース ファイルを開けません "iostream"C/C++(1696)

includePathを更新しろ、とのことなのでc_cpp_properties.jsonを編集しました。
iostreamが入っているフォルダを探してそのパスをincludePathに追加し、そしてコンパイラのパスをcompilerPathに追加しました。

JSON

1{ 2 "configurations": [ 3 { 4 "name": "Win32", 5 "includePath": [ 6 "${workspaceFolder}/**", 7 //この行を追加しました 8 "C:/msys64/usr/lib/gcc/x86_64-pc-msys/9.1.0/include/c++/**" 9 ], 10 "defines": [ 11 "_DEBUG", 12 "UNICODE", 13 "_UNICODE" 14 ], 15 "cStandard": "c11", 16 //この行を追加しました 17 "compilerPath": "C:/msys64/usr/bin/g++.exe", 18 "intelliSenseMode": "msvc-x64" 19 } 20 ], 21 "version": 4 22}

エラーメッセージは次のように変わりました。

#include エラーが検出されました。includePath を更新してください。この翻訳単位 (ファイル名.cpp) では、波線が無効になっています。C/C++(1696) ソース ファイルを開けません "locale.h" (dependency of "iostream")C/C++(1696)

iostreamは認識したようですが、locale.hが読み込めないようです。
locale.hはiostreamが入っているフォルダ(c++)の中に一緒にありました。

環境

エディタは最新版のVSCode、ターミナルはmsys2、コンパイラはg++9.1.0を使用しています。

yuki23👍を押しています

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

2

ベストアンサー

"intelliSenseMode""gcc-x64" に変えてみて下さい

追記
MSYS2 のパッケージマネージャーでは mingw の gcc と msys の gcc を選べますが、おそらく msys の gcc をインストールしたのではないかと思います。これは msys の外(VSCodeのintellisenseなど)では使うことができません。
mingw をインストールするには

$ pacman -S mingw-w64-x86_64-toolchain

すると、C:\msys64\mingw64\bin\g++.exe にインストールされます。詳しくはインストールされたという方に相談するか、検索して下さい。
こちらを compilerPath に使えばエラーは出ないはずです。
なお、includePath の方はおそらく不要です。

投稿2020/02/26 11:44

編集2020/02/26 14:56
yuki23

総合スコア1444

ysk_snn👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

namespace_nqiiv

2020/02/26 12:12

ご回答ありがとうございます。試してみましたが改善されず、エラーメッセージも変わりませんでした。
yuki23

2020/02/26 12:44

ワークスペース内で複数のフォルダを開いていませんか? 一つだけにしてみて下さい
namespace_nqiiv

2020/02/26 13:38

一つしか開いていないのですが......。
yuki23

2020/02/26 13:47

ではそのフォルダの中に複数のc_cpp_properties.jsonがありませんか?
yuki23

2020/02/26 14:09 編集

Shift+Ctrl+P → C/C++: Edit Configurations (UI) を開いてエラーになっているところはありませんか? 私の環境では MSYS2 のコンパイラーのパスは "C:/msys64/usr/bin/g++.exe" ではないのですが、どうやってコンパイラーをインストールしましたか?
namespace_nqiiv

2020/02/26 14:42

>Shift+Ctrl+P → C/C++: Edit Configurations (UI) を開いてエラーになっているところはありませんか? ありませんでした。 >私の環境では MSYS2 のコンパイラーのパスは "C:/msys64/usr/bin/g++.exe" ではないのですが、どうやってコンパイラーをインストールしましたか? もしかしたら僕がコンパイラの場所を勘違いしているかもしれないです。よろしければyuki23さんの環境でのコンパイラのパスをお教えいただけませんか?コンパイラのインストール方法は他人に任せてしまったのでよくわからないです、すみません。
namespace_nqiiv

2020/02/26 14:46

>ではそのフォルダの中に複数のc_cpp_properties.jsonがありませんか? いえ、一つだけでした
namespace_nqiiv

2020/02/26 15:34

ありがとうございます!!!mingwをインストールしたところ直りました。初歩的なことでお手を煩わせてしまい申し訳ありません。迅速かつ丁寧なご対応に感謝いたします。
ysk_snn

2020/09/29 05:53

横からすごく初歩的な質問をしてしまい、大変申し訳ございません。 私もつまっていて、同じ対処法を試そうとしています。 mingw をインストールするための、 $ pacman -S mingw-w64-x86_64-toolchain はどこから実行するものでしょうか...? コマンドプロンプトから行うと、 「'pacman' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と表示されてしまいます...
yuki23

2020/09/29 07:11

ysk_snnさん MSYS2のコンソールです。「msys2 mingw インストール」などのキーワードで検索してみてください。
ysk_snn

2020/09/29 07:41

ありがとうございます!!

0

なら、追加した行を

"C:/msys64/usr/lib/gcc/x86_64-pc-msys/9.1.0/include/**"

に修正してみればどうでしょう

投稿2020/02/26 11:08

y_waiwai

総合スコア86058

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

namespace_nqiiv

2020/02/26 12:15

ご回答ありがとうございます。試してみたのですがエラーメッセージは変わりませんでした。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C++

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