【问题标题】:How to fix namespace "std" has no member "sqrt" in VSCode?如何修复命名空间“std”在 VSCode 中没有成员“sqrt”?
【发布时间】:2019-04-11 06:37:07
【问题描述】:

我能够成功编译和执行我的代码。但是,VSCode 不断向我显示错误消息:

命名空间标准没有成员“sqrt”。

我调整了 properties.json。请告知为什么 vscode 显示此错误。我尝试了谷歌搜索,但无济于事。

#include <iostream>
#include <cmath>
#include <complex>

int main() {
 double a,b,c;
 int root1, root2;


  std::cout<<"Enter a: \n";
  std::cin >> a;
  std::cout<<"Enter b: \n";
  std::cin >> b;
  std::cout<<"Enter c: \n";
  std::cin >> c;

  root1 = (-b + std::sqrt (b*b - 4*a*c)) / (2*a);
  std::cout<<"Root 1 Number: " << root1 << "\n";

  root2 = (-b - std::sqrt (b*b - 4*a*c)) / (2*a);
  std::cout<<"Root 2 Number: " << root2 << "\n";

}

json:
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceRoot}",
                "C:/MinGW/lib/gcc/mingw32/8.2.0/include/c++",
                "C:/MinGW/lib/gcc/mingw32/8.2.0/include/c++/backward",
                "C:/MinGW/lib/gcc/mingw32/8.2.0/include",
                "C:/MinGW/lib/gcc/mingw32/8.2.0/include/c++/tr1",
                "C:/MinGW/lib/gcc/mingw32/8.2.0/include/c++/tr2"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "__GNUC__=6",
                "__cdecl=__attribute__((__cdecl__))"
            ],
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "msvc-x64",
            "browse": {
                "path": [
                    "${workspaceRoot}",
                    "C:/MinGW/lib/gcc/mingw32/8.2.0/include/c++",
                    "C:/MinGW/lib/gcc/mingw32/8.2.0/include/c++/backward",
                    "C:/MinGW/lib/gcc/mingw32/8.2.0/include",
                    "C:/MinGW/lib/gcc/mingw32/8.2.0/include/c++/tr1",
                    "C:/MinGW/lib/gcc/mingw32/8.2.0/include"
                ]
            }

        }
    ],
    "version": 4
}

【问题讨论】:

  • 真的是您的 editor 给您错误,还是 compiler 和编辑器显示的输出?它们是有区别的。此外,当询问有关任何类型的构建错误的问题时,请复制粘贴(作为文本)full 和 complete 输出,即使是看起来不相关的部分。跨度>
  • @Someprogrammerdude 我粘贴了整个代码。 vscode 编辑器在问题选项卡下不断显示此错误。但我能够编译和执行我的代码。这就是为什么我认为这是一个 vscode 问题?还是我没有配置?
  • 正确配置 cpptools 扩展,以便 Intellisense 工作不是很简单。您应该查看此页面,该页面描述了配置 Intellisense 的几种方法:github.com/Microsoft/vscode-cpptools/blob/master/Documentation/…
  • (希望你不介意这个评论回复a post你刚刚删除。)粗体字是作业。--好的。 (请阅读编辑帮助并使用块引用。)但是图表是什么?据推测,一个框内的属性形成了一个集合,一个框箭头框是一个 FD {}->{} 和其他蓝线与该 FD 无关。但是,这不是一个好的解决方案。所以可能这不是给定的解决方案。如果你成功了,请解释原因。但这似乎不太可能,因为您错误地编写了 FD。这个从哪里来?如果您清楚地解释发生了什么,这将很有帮助。祝你好运。
  • @philipxy 图片是我自己制作的。我删除了帖子,因为我认为你不明白我来自哪里。该图像是功能依赖关系图。我在那里发布了这个问题以表明它的相关性。我不是在大喊大叫,而是要引起人们对这个问题的注意,因为它很长。

标签: c++ visual-studio-code


【解决方案1】:

我发现您的c_cpp_properties.json 有两个问题:

  1. 没有compilerPath 属性。
  2. 您将intelliSenseMode 用作msvc-x64,但显然使用gcc 包含路径。

您可能希望通过提供 g++.exe 的完整路径和 (2) 将 intelliSenseMode 更改为 gcc-x86 来解决 (1)。比如:

{
    "configurations": [
        {
            ...
            "compilerPath": "C:/MinGW/bin/g++.exe",
            "intelliSenseMode": "gcc-x86",
            ...
        }
    ],
    "version": 4
}

如果您还没有,我还建议您阅读Getting Started with C++ 指南。即使您最终不想按照教程的方式进行设置,但有一个有效的配置可以与出现问题时进行比较。

另外,在命令面板 (Ctrl+Shift+P) 中,尝试运行“C/C++:日志诊断”。将您在该输出中看到的内容与以下输出进行比较:

  $ touch empty.c
  $ g++ -v -E -dD empty.c

理想情况下,您希望它们尽可能匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2014-09-26
    相关资源
    最近更新 更多