Intellisense жалуется, что «пространство имен std не имеет члена size_t». Как я могу удалить эту (ложную) ошибку? - PullRequest
0 голосов
/ 02 мая 2020

Использование Visual Studio 2019, проект «Открыть папку». Msys2, mingw64.

Сборка завершается без проблем, но IntelliSense жалуется:

Пространство имен "std" не имеет члена "size_t"

IntelliSense также перечисляет ~ 5700 других (ложных) ошибок, но я думаю, что они все связаны.

Как правильно настроить IntelliSense, чтобы он не отображал ложные ошибки, подобные той, о которой я упоминал?

// CppProperties.json
{
  "configurations": [
    {
      "name": "Mingw64",
      "includePath": [
        "${workspaceRoot}\\src\\**",
        "C:\\tools\\msys64\\mingw64\\include",
        "C:\\tools\\msys64\\mingw64\\include\\c++\\9.1.0",
        "C:\\tools\\msys64\\mingw64\\include\\c++\\9.1.0\\x86_64-w64-mingw32",
        "C:\\tools\\msys64\\mingw64\\include\\c++\\9.1.0\\backward",
        "C:\\tools\\msys64\\mingw64\\lib\\gcc\\x86_64-w64-mingw32\\9.1.0\\include",
        "C:\\tools\\msys64\\mingw64\\lib\\gcc\\x86_64-w64-mingw32\\9.1.0\\include-fixed",
        "C:\\tools\\msys64\\mingw64\\x86_64-w64-mingw32\\include"
      ],
      "intelliSenseMode": "windows-clang-x86",
      "environments": [
        {
          "PATH": "C:\\tools\\msys64\\usr\\bin",
          "MSYSTEM": "MINGW64",
          "CHERE_INVOKING": "1"
        }
      ]
    }
  ]
}

// .vs/tasks.vs.json
{
  "version": "0.2.1",
  "tasks": [
    {
      "taskLabel": "build",
      "appliesTo": "*",
      "contextType": "build",
      "type": "default",
      "command": "bash.exe",
      "args": [
        "--login",
        "-c",
        "\"sh build.sh\""
      ],
      "inheritEnvironments": [
        "Mingw64"
      ]
    }
  ]
}

1 Ответ

1 голос
/ 06 мая 2020

Intellisense жалуется, что «в пространстве имен std нет члена size_t». Как я могу удалить эту (ложную) ошибку?

Проекты, созданные с помощью VS Code и VS, несовместимы, имеют разную структуру, поэтому при переходе с VSCode на VS будет много проблем.

В VS, как правило, в проекте C ++ есть файл проекта xxx.vcxproj для управления структурой файлов, а затем MSBuild читает файл xxx.vcxproj для построения вашего проекта. И когда вы открываете проект, вы должны использовать xxx.sln или xxx.vcxproj файл.

А в VS Code, как правило, в папке находится файл cpp, объединенный с task.json и другими файлами для сборки или отладки. Если вы импортируете его в VS, это просто папка с файлами cpp и json, которые не соответствуют структуре проекта в VS IDE.

В конце концов в VS файл заголовка сохраняется в свойствах проекта , тогда как vs code сохраняет адрес файла в файле xxx.json. Вы можете создать консольный проект c ++ в VS для сравнения, щелкнув правой кнопкой мыши по проекту -> Properties -> VC++ Directories -> Include Directories.

enter image description here

Приведенное выше просто объясняет разницу между VS и VS IDE.

Предложение

1) сначала , убедитесь, что вы импортировали это:

#include <iostream>

2) закрыть VS Instance, удалите .vs скрытую папку, выходной файл и затем снова откройте ваш проект , пересоберите несколько раз, чтобы протестировать его.

3) попробуйте создать новый проект c ++ в VS, а затем перенести в него ваши проекты vscode c ++ (скопировать в него файлы cpp и настроить связанные библиотеки по-моему). И, пожалуйста, поддерживайте согласованную структуру в VS IDE.

...