【发布时间】:2012-01-22 10:55:35
【问题描述】:
我尝试在我的 Linux 计算机(使用类似 4.6.4 的东西)上编译这个简单的程序 on IdeOne(它使用 gcc 4.5.1):
#include <string>
#include <iostream>
int main() {
std::cout << std::stoi("32") << std::endl;
}
它完美编译并输出32。但是,当我尝试在我的 Windows 计算机上使用 MinGW 和 gcc 4.6.1 编译它时,我收到了这个错误:
test.cpp: In function 'int main()':
test.cpp:5:19: error: 'stoi' is not a member of 'std'
std::stoul 等也会发生同样的情况。std::stoi 和家人是否由于某种原因在 MinGW 中不存在?我认为 MinGW (sh|w) 上的 gcc 与 Linux 上的行为相同。
【问题讨论】:
-
@KerrekSB 是:
g++ -std=c++0x test.cpp -
MinGW 与 GCC 本身不是由同一组维护的,因此它并不总是最新的。
-
@BenjaminLindley 这是否意味着当您在 MinGW 上执行
g++ -v并获得某个版本时,它实现的功能没有任何意义? -
@Seth:嗯,它告诉你编译器的版本。它并没有告诉你太多关于标准库的信息。
-
我已就此联系过 MinGW-w64 开发人员。对我来说,这只是 libstdc++ 开发者的懒惰。