“ strtoll”和许多其他“不是'std'的成员”

时间:2019-05-23 22:44:36

标签: c++ visual-studio-2015

strtoullstrtofstrtoldvsnprintfwcstollwcstoullwcstof和{{1} }不是'std'的成员。问题是我不使用任何这些功能。我什至不知道它们的存在。它们在文件wcstold中,我也不知道我在使用什么文件。我正在使用VS2015,所以我假设我正在使用VSC ++ 14.0编译器进行编译。

我看到有十几个类似的问题,但是我只能发现两个常见的错误:不使用C ++ 11标志和basic_string.h ing。我已经设置了C ++ 11标志,#include没有任何改变。 this question使我感到好奇。我认为#include <algorithm>的顺序无关紧要。我首先尝试了系统库#include,第二次尝试了第三方库“”,反之亦然,没有发现任何区别。

我还尝试了<>,如其他答案所示,但不存在此类文件。

不确定在这里包括什么,因为我终于到了IDE在我的代码中没有发现错误的地步。同样,所有问题都在“ basic_string.h”中。这是我的#include "stdafx.h"

include

这可能是我将继续更新的其他问题here的延续。

edit 1:16:20 PDT我已经加入了#include <iostrream> #include <string> #include <cstring> #include <sstream> #include <map> #include "curl/curl.h" #include "curl/easy.h" <cstdlib><cstdio>,但我认为没有区别。我很好奇为什么它在从未使用过的文件中存在从未使用过的功能问题。

我完全忘记了昨天和here are the results在VS2015上进行过维修。我不确定这些是可选模块还是核心问题,还是什么。 “ Windows软件开发工具包”听起来很重要,但是我没有为Windows计算机开发(尽管我是在Win7上开发)。

edit 2:PDT 1650有人要求最少的可复制代码。这是整个文件,没有注释:

<cwchar>

我刚刚意识到我并不需要所有包含项(因为我注释掉了所有功能代码),所以现在我将看看是哪个引起了问题。

edit 3 1739 PDT:#include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <sstream> #include <map> #include <cstdio> #include <cwchar> int main(int argc, char *argv[]) { return 0; } cstringcstdlibcstdio和两个cwchar标头是唯一不会导致此错误的标头问题。我可以一次全部包含所有六个。 OP或上一次编辑中提到的任何其他curl都会导致相同的#include错误。但是,在开始出现此问题之前,我认为我没有包含...is not a member of 'std'中的任何一个。<c...>中的每个问题(单个)甚至导致了此问题。我们还在寻找完整的VS2015重新安装吗?

过去30分钟内,Internet处于关闭状态,很抱歉。我要等到明天PDT大约0800才能回复

edit 4:1005 PDT如一个用户建议,我尝试创建一个新项目,但this is what happened。我真的希望我们能做到这一点,因为我不确定你们所有人将提供多少帮助。基本上,我们有一些我不理解的复杂构建设置。在这里工作的其他人也不了解此设置。一个知道的人正在休陪产假。我在一台机器上进行开发,并在服务器上进行构建/调试。但是,我在四处浏览设置,我看到了另一幅图,其中有第二台服务器,我不确定它是如何发挥作用的。之后,将其部署到其他计算机上。无论如何,我选择了与当前项目相同的选项,但是我什至无法创建一个空白项目。我不确定这种失败是由于这个复杂的系统还是因为我的VS2015搞砸了。无论哪种方式,我都无法修复,所以我认为我将在监视此线程以查看此新项目错误是否揭示了某些重要内容的同时,修复VS2015(已存在问题的一次)。非常感谢到目前为止提供帮助的所有人

编辑5:PDT 1240我下周要休假。在第3次之前,我仍然无法为仍然关心的任何人提供任何更新。我要修理然后重新安装

3 个答案:

答案 0 :(得分:1)

如果您包含正确的标准标头,这些功能 在命名空间std中,它们是<cstdlib><cstdio><cwchar> "basic_string.h"不是标准标头;它可能是一些实现特定的标头。 "stdafx.h"是Visual Studio用于预编译标头的方式(这也不在标准中),并且您添加标头的顺序 很重要,尽管通常不应该如此。

答案 1 :(得分:0)

  

我看到有十几个类似的问题,但我只能发现...不能#includeing

这似乎是问题所在。

为了使用标准功能,必须包含声明这些功能的标头。列出的功能无法使用,因为尚未包含相应的标头。

例如,strtoull是在<cstdlib>中声明的,根据您引用的include列表未包括在内。

  

问题是我不使用任何这些功能。我什至不知道它们的存在。它们在文件basic_string.h

如果错误指示basic_string.h使用了这些功能,并且这是basic_string.h包含的标头列表,那么basic_string.h就是有问题的。

  

我很好奇为什么它在从未使用过的文件中存在从未使用过的功能问题。

您可以使用basic_string.h,也可以使用trurn中使用basic_string.h的某些标头。错误消息应告诉您包含的发生方式。

  

我有... #include <algorithm>

包含<algorithm>使您可以使用该标头中的声明。它不允许您使用其他标头中的声明。


  

我还尝试了#include "stdafx.h",如其他答案所示,但不存在此类文件。

如果您的项目配置为使用预编译的"stdafx.h",则必须包含它。如果未配置为使用它,则不得包含它。文件中的其他任何内容之前都必须包含预编译的标头。

答案 2 :(得分:0)

我的Include directories在VisualGDB的“属性”->“ Makefile”设置中有问题。我正在为我得到的每个库添加一个新目录。我重新安装了VS2015,但这没做任何事情,因为罪魁祸首是一个项目选项。我复制了默认*包含目录,仅此而已。

*我团队中的某人向我提供了默认包含目录的列表