#include <stdio.h>
中时,Visual Studio Code 在编辑器中的
~/src
下显示红色波浪线,但当工作区位于
/tmp
中时则不会。两个工作区都可以很好地编译和运行代码。这只是编辑器中的错误。我可以用一个非常简单的
Hello World
C 工作区重现这一点。我正在使用 CMake 和 CMake 工具。版本:
% 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
的屏幕截图:这是
/tmp
的屏幕截图:
编辑:在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
因此这解释了为什么它无法在一个工作区中找到它,但不能解释为什么路径不同。
编辑:这是 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
。
您只需右键单击该句子,然后选择自动解决,然后您将被发送到您的扩展设置,然后向下滚动,然后通过滚动水平条然后按箭头键选择编译器。