web-dev-qa-db-ja.com

WindowsのLinuxサブシステムを使用したVSコードのC \ C ++

Windows用のLinuxサブシステムを使用して、Windows 10ビルド17134のVSコードのエディターで「インクルード」を機能させるのに問題があります。 C/C++拡張機能をインストールし、ドキュメント here に記載されているlaunch.json情報を使用してアプリケーションを実行できます。

ドキュメント here で、Microsoftはc_cpp_properties.jsonを設定してこの問題を回避する方法の概要を説明していますが、あまり進んでいません。現在、「includes」行の下に次のようなエラーが表示されています。

#include errors detected. Please update your includePath. IntelliSense features for this translation unit (C:\Users\Username\Source\c-lang\hello.c) will be provided by the Tag Parser. cannot open source file "stdio.h"

私のc_cpp_properties.json:

{
    "configurations": [
         {
             "name": "WSL",
             "intelliSenseMode": "clang-x64",
             "compilerPath": "/usr/bin/gcc",
             "includePath": [
                 "${workspaceFolder}",
                 "/usr/include/"
             ],
             "defines": [],
             "browse": {
                 "path": [
                     "${workspaceFolder}",
                     "/usr/include"
                 ],
                 "limitSymbolsToIncludedHeaders": true,
                 "databaseFilename": "",
             },
             "cStandard": "c11",
             "cppStandard": "c++17"
         }

    ],
    "version": 4
}
8
loganhuskins

Githubの問題に関する this コメントのおかげでそれを理解しました。

私は彼らが推奨するコマンドを取り、C++ではなくCを使用するように編集し、WSLで実行しました。

gcc -v -E -x c -

特に、すべてのgccがCライブラリを探している場所をリストしました。そのリストをコピーして、個々のパスを「includePath」配列と「path」配列に入れました。これが私の更新されたc_cpp_properties.jsonファイルです。

{
  "configurations": [
    {
      "name": "WSL",
      "intelliSenseMode": "clang-x64",
      "compilerPath": "/usr/bin/gcc",
      "includePath": [
        "${workspaceFolder}",
        "/usr/include/x86_64-linux-gnu/5/include",
        "/usr/local/include",
        "/usr/include/x86_64-linux-gnu/5/include-fixed",
        "/usr/include/x86_64-linux-gnu",
        "/usr/include"
      ],
      "defines": [],
      "browse": {
        "path": [
          "${workspaceFolder}",
          "/usr/include/x86_64-linux-gnu/5/include",
          "/usr/local/include",
          "/usr/include/x86_64-linux-gnu/5/include-fixed",
          "/usr/include/x86_64-linux-gnu",
          "/usr/include"
        ],
        "limitSymbolsToIncludedHeaders": true,
        "databaseFilename": ""
      },
      "cStandard": "c11",
      "cppStandard": "c++17"
    }
  ],
  "version": 4
}

これが誰かを助けることを願っています。

7
loganhuskins