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

Используя 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"
      ]
    }
  ]
}

person birgersp    schedule 02.05.2020    source источник
comment
Я предлагаю вам закрыть экземпляр VS, войти в папку проекта, удалить .vs скрытую папку, bin, obj папку, а затем перезапустить проект. Затем снова протестируйте.   -  person Mr Qian    schedule 04.05.2020
comment
Кажется, вы создали проект С++ в vscode, а затем перенесли его в визуальную студию. Не могли бы вы поделиться с нами примером кода?   -  person Mr Qian    schedule 06.05.2020


Ответы (1)


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. Вы можете создать консольный проект С++ в VS для сравнения, щелкните проект правой кнопкой мыши -->Properties-->VC++ Directories-->Include Directories.

введите здесь описание изображения

Вышеприведенное предназначено только для того, чтобы объяснить разницу между VS и VS IDE.

Предложение

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

#include <iostream>

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

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

person Mr Qian    schedule 06.05.2020