gpt4 book ai didi

c++ - std::tr1 与 visual studio 2017

转载 作者:可可西里 更新时间:2023-11-01 17:37:50 24 4
gpt4 key购买 nike

我有一些使用谷歌 GTest 框架版本的 C++ 代码。这段代码过去在 Visual Studio 2015 上编译得很好。我刚升级到 VS2017,现在我得到了一堆这样的错误:

error C2039: 'tr1': is not a member of 'std'
error C3083: 'tr1': the symbol to the left of a '::' must be a type

在 VS2017 中使用 std::tr1 是否需要一些编译器选项?

最佳答案

一个选项是重新启用 TR1;通过定义宏 _HAS_TR1_NAMESPACE 来做到这一点,如 this blog article 中简要提到的那样.如果您使用的是 MSBuild 项目,那么最好通过项目的 Preprocessor Definitions 来完成。环境;或者,如果您使用的是预编译 header ,请在所述 PCH 的顶部定义它。

更好的选择是在包含任何 GTest header 之前,通过将宏 GTEST_LANG_CXX11 定义为 1 来通知 GTest 您的编译器支持 C++11;那么它将使用 std::tuple 而不是 std::tr1::tuple*。 ( GTest's C++11-detection logic 是面向 __cplusplus 的,尽管大部分 C++11 和 C++14 兼容,但 VC++ 尚未更新。我会说这是 GTest 中的一个错误,因为它在其他地方支持 VC++整个配置逻辑。)

* 更不用说其他 C++11 功能,这就是为什么这是迄今为止更好的选择;-]

关于c++ - std::tr1 与 visual studio 2017,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42847103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com