C++11在CygWin中使用时,std::to_string不是一个成员。

3
我有以下代码...
// My.h
#include <string>
....

// My.cpp
#include "My.h"
...
errMsg = "X value [too low]: " + std::to_string(xInVal);

但是当我编译时,出现了以下错误:

//setup.py
extra_compile_args =['-std=c++11']

//console output
gcc -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/usr/src/ports/python3/python3-3.4.3-1.x86_64/build=/usr/src/debug/python3-3.4.3-1 -fdebug-prefix-map=/usr/src/ports/python3/python3-3.4.3-1.x86_64/src/Python-3.4.3=/usr/src/debug/python3-3.4.3-1 -I./My -c ./My.cpp -o build/temp.cygwin-2.2.1-x86_64-3.4/./My.o -std=c++11

我遇到了以下错误....
 error: ‘to_string’ is not a member of ‘std’
   errMsg = "X value [too low]: " + std::to_string(xInVal);

我应该怎样使用to_string?我好像少了什么。

可能是重复问题 https://dev59.com/smcs5IYBdhLWcg3wSSDH - Jackie
1
你使用的 GCC 版本是什么 (gcc --version)? - Martin Bonner supports Monica
3
即使在Cygwin GCC 5.2.0 + stdlibc++ 5.2.0上,它仍然无法正常工作。我非常惊讶。@Jackie,你可能需要自己实现它,这并不是什么大问题,或者切换到另一个Windows工具链:MSYS + MinGW-w64(已经修复了),Visual Studio(它并不像过去那样糟糕,而且现在有独立的工具链,没有IDE),Clang/C2(clang前端+微软代码生成器),Intel等。唯一的问题是如果您的应用程序使用类似autotools或Unix特定的标头/库之类的东西。 - Ivan Aksamentov - Drop
@Drop 谢谢,我尝试查找如何修补它,但是没有太多的运气。如果我回到Unix VM,它应该可以正常工作,对吧(或者至少不会有这些问题)。我想我必须学习其中一种其他工具链了。 - Jackie
1个回答

0

从CYGWIN头文件来看,对于C++11,除非定义了_GLIBCXX_USE_C99,否则它们不被定义。它们包含在以下if语句中:

#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99)

我尝试定义_GLIBCXX_USE_C99,但对于我的项目没有起作用。您可以在使用字符串头文件之前尝试定义它。

最近我在CYGWIN上遇到了一个类似的与__STRICT_ANSI__有关的C++11问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接