'strtoll' 和许多其他 "not a member of 'std'"

'strtoll' and many others "not a member of 'std'"

strtoullstrtofstrtoldvsnprintfwcstollwcstoullwcstofwcstold 不是 'std.' 的成员问题是我不使用这些函数中的任何一个。我什至不知道它们的存在。它们在文件 basic_string.h 中,我也不知道我在使用它。我正在使用 VS2015,所以我假设我正在使用 VSC++ 14.0 编译器进行编译。

我看到有十几个类似的问题,但我只能找到两个常见错误:未使用 C++11 标志和未 #includeing 。我已经设置了 C++11 标志并且 #include <algorithm> 没有任何改变。 不过让我很好奇。我认为 #include 的顺序无关紧要。我尝试了系统库 <> 第一方库和第三方库第二个 "" 以及 vice-versa 并没有发现任何区别。

我也试过 #include "stdafx.h" 正如其他一些答案所示,但不存在这样的文件。

不确定要在此处包含什么,因为我终于到了 IDE 未识别出我的代码中的错误的地步。同样,所有问题都在 "basic_string.h." 中,这是我的 includes:

#include <iostrream>
#include <string>
#include <cstring>
#include <sstream>
#include <map>

#include "curl/curl.h"
#include "curl/easy.h"

这可能是我的另一个问题 的延续,我现在将更新它。

编辑 1:我已经包含了 <cstdlib><cstdio><cwchar>,我看不出有什么区别。我很好奇为什么我从未接触过的文件中从未使用过的功能会出现问题。

我完全忘记了我 运行 昨天对 VS2015 的修复和 here are the results。我不确定这些是可选模块还是核心问题还是什么。 "Windows Software Development Kit" 听起来很重要,但我不是为 windows 机器开发(尽管我是在 Win7 上开发)。

编辑 2:有人要求提供最少的可重现代码。这是没有注释的整个文件:

#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <sstream>
#include <map>
#include <cstdio>
#include <cwchar>

int main(int argc, char *argv[])
{
return 0;
}

刚刚意识到我不需要所有的 include(因为我注释掉了所有功能代码)所以我现在要看看是哪一个导致了这个问题。

编辑 3 :cstringcstdlibcstdiocwchar,并且两个 curl headers 是唯一的 headers 不会导致此问题。我可以毫无问题地同时包含所有六个。 OP 或之前的编辑中提到的任何其他 #include 都会导致相同的 ...is not a member of 'std' 错误。但是,在我开始遇到这个问题之前,我认为我没有包含任何 <c...>iostream,string,sstream,map 每个(甚至个别)都会导致这个问题。我们还在寻找完整的 VS2015 重新安装吗?

编辑 4:正如一位用户所建议的,我尝试创建一个新项目,但 this is what happened。我真的希望我们不会走到这一步,因为我不确定你们能提供多少帮助。基本上,我们有一些我不明白的复杂构建设置。在这里工作的另一个人也不了解设置。一个知道的人正在休陪产假。我在一台机器上开发,building/debugging 在服务器上开发。但是,我在查看设置时看到了一个不同的图表,其中混合了第二个服务器,但我不确定它是如何发挥作用的。之后,它被部署到不同的机器上。无论如何,我选择了与当前项目相同的选项,但我什至无法创建一个空白项目。我不确定这次失败是因为这个复杂的系统还是因为我的 VS2015 搞砸了。无论哪种方式,我都无法按原样修复此问题,因此我认为我将致力于修复 VS2015(曾经有过问题),同时监视此线程以查看此新项目错误是否揭示了一些重要信息。非常感谢迄今为止提供帮助的所有人

编辑 5:我下周休假。直到 3 号,我才能为仍然关心的任何人提供任何更新。我要修复然后重装

那些函数 在命名空间 std 如果您包含正确的标准 header,它们是 <cstdlib><cstdio><cwchar>. "basic_string.h" 不是标准的 header;它可能是一些特定于实现的 header。 "stdafx.h" 是 Visual Studio 用于预编译的 headers(它也不在标准中)以及包含 headers 的顺序 can 很重要,尽管它通常不应该。

I see that there over a dozen similar questions but I can only find... not #includeing

这似乎是问题所在。

为了使用标准函数,必须包含声明这些函数的 header。无法使用列出的函数,因为没有包含相应的 headers。

例如,strtoull 声明在 <cstdlib> 中,根据您引用的包含列表,它没有被包含。

The problem is I don't use any of these functions. I didn't even know they existed. they are in file basic_string.h

如果错误表明 basic_string.h 使用了那些函数,并且这是 basic_string.h 包含的 header 的列表,那么 basic_string.h 是错误的。

I'm curious why it's having issues with functions I've never used in files I've never touched.

您要么使用 basic_string.h,要么使用一些 header 而实际上使用 basic_string.h。错误消息应该会告诉您包含是如何发生的。

I have ... #include <algorithm>

包含 <algorithm> 可让您使用来自 header 的声明。它不允许您使用来自其他 header 的声明。


I also tried #include "stdafx.h" as some other answers indicated, but no such file exists.

如果您的项目配置为使用 pre-compiled "stdafx.h",那么您必须包含它。如果未配置为使用它,则不得包含它。 Pre-compiled headers 必须在文件中的任何其他内容之前包含。

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

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