Visual Studio Code показывает красные волнистые линии под #include <stdio.h> в редакторе, когда рабочая область находится в ~/src, но не в /tmp. Обе рабочие области компилируются и отлично запускают код. Это всего лишь ошибка в редакторе.

Я могу воспроизвести это с помощью очень простой рабочей области Hello World C. Я использую CMake вместе с CMake Tools. Версии:

  • macOS Catalina 10.15.7
  • CMake 3.19.5
  • Код Visual Studio 1.53.2
  • Расширение C / C ++ 1.2.1
  • Расширение CMake Tools 1.6.0

Вот структура каталогов:

% tree hello_world
hello_world
├── CMakeLists.txt
└── main.c

Вот CMakeLists.txt:

cmake_minimum_required(VERSION 3.0.0)
project(hello_world VERSION 1.0.0)

add_executable(hello_world main.c)

Вот main.c:

#include <stdio.h>

int main(int argc, char** argv)
{
    printf("hello world\n");
    return 0;
}

Вот скриншот для ~/src:

src-workspace

А вот скриншот для /tmp:

tmp-workspace

Изменить : опубликован вывод "C / C ++: Log Diagnostics" для обеих рабочих областей на Суть. Вот часть различия:

     Includes:
-        /usr/local/include
         /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include
-        /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include
         /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
-    Frameworks:
-        /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks

Это объясняет, почему он не может найти его в одной рабочей области, но не почему пути разные.

2
Dave Dribin 21 Фев 2021 в 23:42

1 ответ

Лучший ответ

Изменить : это была ошибка в VS Расширение кода C / C ++, исправленное в версии 1.2.2 .


Очевидно, это Часто задаваемые вопросы:

В: Почему я вижу красные волнистые линии под типами стандартной библиотеки?

О: Самая распространенная причина - отсутствие путей включения и определения. Самый простой способ исправить это на каждой платформе:

Linux / Mac : укажите "intelliSenseMode": "clang-x64" или "intelliSenseMode": "gcc-x64" и compilerPath в c_cpp_properties.json в качестве пути к вашему компилятору.

Я изменил только intelliSenseMode на clang-x64 (он был отключен), оставив compilerPath в покое, и это устранило проблему. Я не понимаю, почему в исходном каталоге отсутствуют пути включения или почему этот режим не используется по умолчанию, но теперь он работает.

Изменить : я создал проблему № 7014 на microsoft/vscode-cpptools Проект GitHub.

Изменить : мою проблему заменили на проблему № 6992 , что было исправлено в версии 1.2.2.

intelliSenseMode

2
Dave Dribin 27 Фев 2021 в 01:02