VS 2017命令行错误D8004

时间:2018-01-04 08:33:46

标签: c++ visual-studio-2017 suppress-warnings

我没有选择,我正在尝试在Visual Studio 2017社区中使用GoogleTest,但它给了我很多

  

警告C4996:'std :: tr1':警告STL4002:非标准std :: tr1   命名空间和TR1-only机器已弃用,将被删除。   您可以将_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING定义为   承认您已收到此警告。

我想压制它,所以我选择了我的项目属性 - > C / C ++ - >高级 - >禁止特定警告,我试试

/wd4996
/wdSTL4002,
/wd4996;
/wdC4996
/wd[4996]...
等等,我老老实实地尝试了所有可能的组合,它抛出了我

  

2> cl:命令行错误D8004:'/ wd'需要参数

有人能告诉我我需要写什么来压制这个吗?

5 个答案:

答案 0 :(得分:1)

请按照以下步骤操作:

  1. 单击工具栏上的“查看”。

  2. 在底部选择属性。.

3。选择c / c ++->预处理器。

4。将预处理器定义设置为_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING

答案 1 :(得分:0)

根据错误消息,您可以在命令行中添加ExecutorService executor = Executors.newFixedThreadPool(500); executor.invokeAll(tasks); 等效项:

#define

这相当于在源文件的第一行之前插入

/D:_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING

答案 2 :(得分:0)

沉默警告绝不是一个好选择。在这种情况下,关于tr1的警告似乎是由于错误的项目配置引起的。您可以尝试定义GTEST_LANG_CXX11以使gtest使用来自std命名空间的内容或跟踪这些警告的来源,并找出它们仍然发布的原因。

答案 3 :(得分:0)

我知道这已有答案,但要具体回答你的问题,如果你只是添加4996,而不是/ wd [4996](或任何其他变体)。

您需要添加的只是4996。

答案 4 :(得分:0)

我通过进入 Project Properties > Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions 并将 _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING 添加到预处理器定义来修复此错误: enter image description here

在这个 gtest 终于构建成功之后。

当我点击项目时,在文件顶部和附加预处理器定义中添加 #define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING 1 没有帮助。