我正在尝试使用最新版本的Visual Studio 2017上的gtest构建一个简单的测试。代码如下:
#include "pch.h"
#include <gtest/gtest.h>
struct BankAccount
{
int balance = 0;
BankAccount()
{
}
explicit BankAccount(const int balance)
: balance{ balance }
{
}
};
TEST(AccountTest, BankAccountStartsEmpty)
{
BankAccount account;
EXPECT_EQ(0, account.balance);
}
int main(int argc, char* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
构建错误是:
Error C4996 'std::tr1': warning STL4002: The non-Standard std::tr1 namespace and TR1-only machinery are deprecated and will be REMOVED.
You can define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING to acknowledge that you have received this warning.
我已经尝试过:
#define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
但它只是让事情变得更糟。我不知道如何解决这个错误。
UPDATE
我尝试在预处理器的定义和上面的包含中添加define。既不起作用!!
试着去:
查看 - >属性 - > C / C ++ - >预处理器
并将预处理程序定义设置为_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
另一种解决方案是通过定义TR1
来重新启用_HAS_TR1_NAMESPACE
。
但是,禁用错误不是一个好主意。由于项目设置不正确,您的警告可能存在,您应通过将gtest
设置为GTEST_LANG_CXX11
来通知1
您的编译器版本支持更新的C ++版本。