为什么 Visual Studio Code 告诉我 cout 不是 std 命名空间的成员?

问题描述 投票:0回答:11

我正在尝试设置 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
            }
        }
    }
]
}

我该如何解决这个问题?

c++ c++11 visual-studio-code
11个回答
85
投票

这是一个bug

此错误有一个解决方法,请转到 VS Code 中的

File -> Preferences -> Settings
并更改

"C_Cpp.intelliSenseEngine": "Default"
"C_Cpp.intelliSenseEngine": "Tag Parser"


4
投票

我正在使用带有 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

https://code.visualstudio.com/docs/languages/cpp


2
投票

我也有同样的问题,发现是vscode的bug。 请参考以下链接。

https://github.com/Microsoft/vscode-cpptools/issues/743


1
投票

VS Code 更新到 v1.57 后我也遇到了同样的问题。
经过很长时间的研究,我发现这是由于最近的更新而导致的错误。它还更新了我现有的已安装扩展。 C/C++ Microsoft 扩展-(C/C++ IntelliSense、调试、代码浏览。) 也是其中之一。也从1.4.0更新到1.4.1。
所以我最终发现实际的错误是在这个扩展的 v1.4.1 中,所以我再次降级到旧版本,这对我来说工作得很好。

安装相同扩展的旧版本的步骤:

  1. 单击扩展程序
  2. 单击“卸载”附近的向下箭头
  3. 单击安装另一个版本...
  4. 现在安装适合您的版本。

0
投票

我遇到了 vscode 无法检测其他文件中的 #define 常量的问题。通过转到以下位置为我解决了这个问题:文件 > 首选项 > 设置 > 扩展 > C/C++

向下滚动到 C_Cpp › 默认:Intelli Sense Mode 并将默认值更改为您的编译器(在我的例子中为 gcc-x64)。


0
投票

我忘记添加#include iostream。 添加后问题解决了。


0
投票

Alt + f4 并重新启动 vscode。错误消失了!


0
投票

对我有用的就是删除

iostream
bits/stdc++.h
包含,保存文档并再次添加。这无需重新启动 VSCode 即可修复问题。


0
投票

我认为您不需要更改扩展程序的设置,因为还指定这样做会产生“模糊”智能感知。

我能够通过修复 c_cpp_properties.json 文件来解决问题:

"intelliSenseMode": "${default}"

当您切换设备时,这可能会发生变化。我在 Windows 和 Mac 上都工作过,因此这样做会自动识别您正在使用的系统。


0
投票

就我而言,发生这种情况是因为编译器设置不一致:

  1. 我在 Windows 中安装了 Visual Studio 和 TDM-GCC-64
  2. 我配置了 vscode 设置
    C_Cpp > Default: System Include Path
    以包含 TDM-GCC-64 的目录
  3. 我将 vscode 设置
    C_Cpp › Default: Compiler Path
    保留为空(同时 vscode 会自动检测我的 Visual Studio 并将其用作编译器路径)

解决方案:同时将

C_Cpp › Default: Compiler Path
配置为
path/to/gcc.exe


0
投票

我尝试在已接受的答案下发表评论以记录以下内容,但不被允许。我也时常遇到这种情况。

VSCode 版本 1.96.1。 答案中指出的相同修复仍然有效:)

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