puzzle
@puzzle (kokoko)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

C/C++の拡張機能のエラー

VScodeでC/C++でのコードを最近よく書きます。ある日突然C/C++の拡張機能(インテリセンス?)がエラーを凄まじい数出してきて、一時は解決したかなと思ったらまた出てきたのでここで質問をします。

発生しているエラー

実は先月もエラーがでていて、その際はincludepathを編集することによって解決しました(それまではincludepathを書いていなかったのに拡張機能のインテリセンスも不具合なく動作していました)。それはさておき、エラーを直そうとごちゃごちゃいじっていると、インテリセンスが効かなくなるワークスペースが出てきたり、識別子"~~~"が定義されていません、などのエラーが出てきています。

コンパイル、実行ができるので拡張機能の調整が必要ではないかと考えています。

具体的には、インテリセンスが効かないワークスペースが出現してしまっています。このワークスペースのプロパティを記載します。(c_cpp_properties.json)

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${default}",
                "/usr/local/Cellar/gcc/11.3.0_2/include/c++/11",
                "/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1",
                "/usr/local/Cellar/gcc/11.3.0_2/include/c++/11/bits"
            ],
            "defines": [],
            "macFrameworkPath": [],
            "compilerPath": "/usr/local/bin/gcc-11",
            "cStandard": "gnu17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "macos-gcc-x64"
        }
    ],
    "version": 4
}

次に、vscode内共通のsetting.jsonで指定しているプロパティの部分を記載します。(setting.json)

"C_Cpp.default.includePath": [
        "${workspaceFolder}/**",
        "${default}",
        "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/",
        "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include",
        "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks",
        "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library",
        "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/",
        "/usr/local/include",
        "/usr/local/Cellar/gcc/11.3.0_2/include/c++/11",
        "/usr/local/Cellar/gcc/11.3.0_2/include/c++/11/tr1",
        "/usr/local/Cellar/gcc/11.3.0_2/include/c++/11/bits",
        "/usr/local/Cellar/gcc/11.3.0_2/include/c++/11/x86_64-apple-darwin21",
        "/usr/local/Cellar/gcc/11.3.0_2/include/c++/11/experimental",
        "/usr/local/Cellar/gcc/11.3.0_2/include/c++/11/debug",
    ],

加えて、コードの冒頭で確実にライブラリをインクルードしているにもかかわらず、識別子"~~~"が定義されていませんというエラーが出てしまっています。
ここに該当コードを記載します。

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int N, S;
    cin >> N >> S;
    vector<int> A(N), P(N);
    int sum = 0;
    int count = 0;
    ...
}

二行目でvectorをインクルードしているにもかかわらず、vectorの部分に赤波線で識別子"vevtor"が定義されていません C/C++(20) とのエラーが出てきます。
(7/14 追記:  stringやmapなどをインクルードして "string s" という宣言をしようとすると s の部分に赤波線で "不完全な型は使用できません C/C++(70)"とのエラーも出てくるようになりました)

エラーをまとめると、インテリセンスが効かないワークスペースがある、ライブラリのインテリセンスが思うように動作しない、です。

解決策をお持ちの方、もしかしたらこれじゃない?という方も回答いただけると嬉しいです。
欲しい情報があれば随時追加するのでその際もコメントください。

0

No Answers yet.

Your answer might help someone💌