[英]error : to_string was not declared in this scope
我正在编译solaris 5.11上的代码。 G ++版本是4.8.2。
相同的代码可在Ubuntu上使用,但会出现错误:在solaris上未在此范围内声明“ to_string()”。
我浏览了许多链接并尝试了以下操作:
以上两种方法均无效。
是否与Solaris有关?
实际的代码非常庞大。 因此,在下面的示例代码中模拟错误。
temp.cpp
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
int i = 10;
str = "john age is " + to_string(i);
cout << str;
return 0;
}
命令:g ++ temp.cpp -std = c ++ 0x -o temp
对于GCC 4.8.2, to_string
函数根据以下条件有条件地定义:
#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \
&& !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
GLIBCXX_USE_C99
宏取决于操作系统支持的大量C99函数,因此,大概是在Solaris上构建GCC时未找到必需的C99库函数。 因此,没有to_string
定义。
在当前版本的GCC中,条件更为细化,并检查C99函数是否在C ++ 98模式和C ++ 11中定义,以便缺少任何C99函数不会禁用所有功能:
#if __cplusplus >= 201103L
//...
#if _GLIBCXX_USE_C99_STDIO
无法将这些改进移植到GCC 4.8,因此您可能需要至少更新到GCC 6。
使用std = c ++ 11进行编译,如下所示
g ++ -std = c ++ 11 filename.cc
注意:您的编译器必须支持c ++ 11
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.