当工作区位于 ~/src 而不是 /tmp 时,VS Code 在“stdio.h”下显示红色波浪线

问题描述 投票:0回答:2
当工作区位于

#include <stdio.h>

 中时,Visual Studio Code 在编辑器中的 
~/src
 下显示红色波浪线,但当工作区位于 
/tmp
 中时则不会。两个工作区都可以很好地编译和运行代码。这只是编辑器中的错误。

我可以用一个非常简单的

Hello World

 C 工作区重现这一点。我正在使用 CMake 和 CMake 工具。版本:

    macOS Catalina 10.15.7
  • CMake 3.19.5
  • Visual Studio 代码 1.53.2
  • C/C++ 扩展 1.2.1
  • CMake 工具扩展 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

编辑:在Gist上发布了两个工作区的“C/C++:日志诊断”的输出。这是差异的一部分:

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
因此这解释了为什么它无法在一个工作区中找到它,但不能解释为什么路径不同。

c macos visual-studio-code cmake macos-catalina
2个回答
3
投票

编辑:这是 VS Code C/C++ 扩展中的一个错误,已在 版本 1.2.2中修复。


这显然是一个

常见问题解答

问:为什么我在标准库类型下看到红色波浪线?

A:最常见的原因是缺少包含路径和定义。在每个平台上修复此问题的最简单方法如下:

Linux/Mac:将 "intelliSenseMode": "clang-x64"

"intelliSenseMode": "gcc-x64"
compilerPath
 中的 
c_cpp_properties.json
 设置为编译器的路径。

我只将

intelliSenseMode

 更改为 
clang-x64
(未设置),保留 
compilerPath
,这解决了问题。我不明白为什么源目录会导致“缺少包含路径”或者为什么此模式不是默认模式,但它现在可以工作。

编辑:我在 microsoft/vscode-cpptools GitHub 项目上创建了 issue #7014

编辑:我的问题被欺骗为问题#6992,已在版本1.2.2中修复。

intelliSenseMode


0
投票
我也有这个问题

您只需右键单击该句子,然后选择自动解决,然后您将被发送到您的扩展设置,然后向下滚动,然后通过滚动水平条然后按箭头键选择编译器。

© www.soinside.com 2019 - 2024. All rights reserved.