我正在尝试设置 Visual Studio Code 以用 C++ 进行编程。我已经安装了扩展 C/C++ 和 C/C++ Intellisense
以下是我的代码:
#include<iostream>
using namespace std;
int main()
{
cout<< "hello" ;
}
我收到的错误是
identifier cout is undefined
,当我将其写为 std::cout
时,我收到的错误是 namespace std has no member cout
。
以下是我的 task.json
文件:
{
"version": "0.1.0",
"command": "make",
"isShellCommand": true,
"tasks": [
{
"taskName": "Makefile",
// Make this the default build command.
"isBuildCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "always",
// No args
"args": ["all"],
// Use the standard less compilation problem matcher.
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}
我该如何解决这个问题?
这是一个bug。
此错误有一个解决方法,请转到 VS Code 中的
File -> Preferences -> Settings
并更改
"C_Cpp.intelliSenseEngine": "Default"
至 "C_Cpp.intelliSenseEngine": "Tag Parser"
我正在使用带有 MinGW 编译器的 VSCode 版本 1.22.2,以下配置对我有用:
{
"configurations": [
{
"name": "MinGW",
"intelliSenseMode": "clang-x64",
"compilerPath": "C:/MinGW/bin/g++.exe",
"includePath": [
"${workspaceRoot}",
],
"defines": [
"_DEBUG"
],
"browse": {
"path": [
"C:/MinGW/lib/gcc/mingw32/6.3.0/include",
"C:/MinGW/lib/gcc/mingw32/6.3.0/include-fixed",
"C:/MinGW/include/*"
"${workspaceRoot}",
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 3
}
也请参考这些链接: https://github.com/Microsoft/vscode-cpptools/blob/master/Documentation/LanguageServer/MinGW.md
我也有同样的问题,发现是vscode的bug。 请参考以下链接。
VS Code 更新到 v1.57 后我也遇到了同样的问题。
经过很长时间的研究,我发现这是由于最近的更新而导致的错误。它还更新了我现有的已安装扩展。 C/C++ Microsoft 扩展-(C/C++ IntelliSense、调试、代码浏览。) 也是其中之一。也从1.4.0更新到1.4.1。
所以我最终发现实际的错误是在这个扩展的 v1.4.1 中,所以我再次降级到旧版本,这对我来说工作得很好。
安装相同扩展的旧版本的步骤:
我遇到了 vscode 无法检测其他文件中的 #define 常量的问题。通过转到以下位置为我解决了这个问题:文件 > 首选项 > 设置 > 扩展 > C/C++
向下滚动到 C_Cpp › 默认:Intelli Sense Mode 并将默认值更改为您的编译器(在我的例子中为 gcc-x64)。
我忘记添加#include iostream。 添加后问题解决了。
Alt + f4 并重新启动 vscode。错误消失了!
对我有用的就是删除
iostream
或 bits/stdc++.h
包含,保存文档并再次添加。这无需重新启动 VSCode 即可修复问题。
我认为您不需要更改扩展程序的设置,因为还指定这样做会产生“模糊”智能感知。
我能够通过修复 c_cpp_properties.json 文件来解决问题:
"intelliSenseMode": "${default}"
当您切换设备时,这可能会发生变化。我在 Windows 和 Mac 上都工作过,因此这样做会自动识别您正在使用的系统。
就我而言,发生这种情况是因为编译器设置不一致:
C_Cpp > Default: System Include Path
以包含 TDM-GCC-64 的目录C_Cpp › Default: Compiler Path
保留为空(同时 vscode 会自动检测我的 Visual Studio 并将其用作编译器路径)解决方案:同时将
C_Cpp › Default: Compiler Path
配置为 path/to/gcc.exe
我尝试在已接受的答案下发表评论以记录以下内容,但不被允许。我也时常遇到这种情况。
VSCode 版本 1.96.1。 答案中指出的相同修复仍然有效:)