Error: ‘to_string’ is not a member of ‘std’ when compiling in command line with gcc 4.8.2, works in NetBeans?
Error: ‘to_string’ is not a member of ‘std’ when compiling in command line with gcc 4.8.2, works in NetBeans?
我正在使用 GoogleTest (1.7.0) 测试我的代码。我必须在 NetBeans (8.0.2) 和直接从命令行编译测试。
NetBeans 按照此处的建议集成了 GoogleTest:https://youtu.be/TS2CTf11k1U。
我还使用软件包随附的说明从命令行(在不同的地方)构建了 GoogleTest。
有问题的代码行是(a 和 b 是双精度数):
std::string input = std::to_string(a) + " " + std::to_string(b);
在使用
编译时给出 error: ‘to_string’ is not a member of ‘std’
g++ -isystem -std=c++0x ~/gtest-1.7.0/include -pthread ~/Task1/test_source.cpp libgtest.a -o test_module1_1
按照 GoogleTest 文档中的说明。
奇怪的是,当使用来自 NetBeans 的 "Test" 时(如视频所示),测试编译并 运行 正确。
我正在使用 Ubuntu 14.04,我已经尝试更新 g++(虽然不是更高版本),我还尝试使用 -std=c++11
而不是 [=15] 指定版本=].
在 NetBeans 中可以看到此警告:
Library File /usr/include/c++/4.8/string
but there is an unresolved #include <stddef.h>
in included /usr/include/_G_config.h
我发现这可能是因为 multilib,我也尝试通过检查它是否已安装来修复它。这在编译期间并没有真正引起任何警告,所以可能只是 IDE 被混淆了。
但考虑到编译错误的真正问题:
GoogleTest 框架、编译器或我的代码有问题吗?
PS。最好不要建议我不使用 to_string 因为这个系统必须可供学习 C++11 的学生使用,实际上不应该是他们不能使用所有应该支持的功能.
我认为你的问题是你将命令行参数传递给 gcc 的顺序
g++ -isystem -std=c++0x ~/gtest-1.7.0/include ...
^^^^^^^^^^^^^^^^^^^
-isystem
标志后面应该跟一个包含 headers 的路径,您希望 gcc 将其视为 system headers。所以 -std=c++0x
标志被 -isystem
标志错误地使用了。您可能希望命令行为
g++ -std=c++0x -isystem ~/gtest-1.7.0/include ...
我正在使用 GoogleTest (1.7.0) 测试我的代码。我必须在 NetBeans (8.0.2) 和直接从命令行编译测试。
NetBeans 按照此处的建议集成了 GoogleTest:https://youtu.be/TS2CTf11k1U。 我还使用软件包随附的说明从命令行(在不同的地方)构建了 GoogleTest。
有问题的代码行是(a 和 b 是双精度数):
std::string input = std::to_string(a) + " " + std::to_string(b);
在使用
编译时给出error: ‘to_string’ is not a member of ‘std’
g++ -isystem -std=c++0x ~/gtest-1.7.0/include -pthread ~/Task1/test_source.cpp libgtest.a -o test_module1_1
按照 GoogleTest 文档中的说明。
奇怪的是,当使用来自 NetBeans 的 "Test" 时(如视频所示),测试编译并 运行 正确。
我正在使用 Ubuntu 14.04,我已经尝试更新 g++(虽然不是更高版本),我还尝试使用 -std=c++11
而不是 [=15] 指定版本=].
在 NetBeans 中可以看到此警告:
Library File /usr/include/c++/4.8/string
but there is an unresolved #include <stddef.h>
in included /usr/include/_G_config.h
我发现这可能是因为 multilib,我也尝试通过检查它是否已安装来修复它。这在编译期间并没有真正引起任何警告,所以可能只是 IDE 被混淆了。
但考虑到编译错误的真正问题: GoogleTest 框架、编译器或我的代码有问题吗?
PS。最好不要建议我不使用 to_string 因为这个系统必须可供学习 C++11 的学生使用,实际上不应该是他们不能使用所有应该支持的功能.
我认为你的问题是你将命令行参数传递给 gcc 的顺序
g++ -isystem -std=c++0x ~/gtest-1.7.0/include ...
^^^^^^^^^^^^^^^^^^^
-isystem
标志后面应该跟一个包含 headers 的路径,您希望 gcc 将其视为 system headers。所以 -std=c++0x
标志被 -isystem
标志错误地使用了。您可能希望命令行为
g++ -std=c++0x -isystem ~/gtest-1.7.0/include ...