Ter*_*nko 2 c++ deprecated deprecation-warning
我对C++和编程非常陌生,目前正在使用Bjarne Stroustrup的编程:使用C++的原理和实践.我一直收到以下错误
严重性代码说明项目文件行错误C2338已弃用,将被删除.请用 .您可以定义_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS以确认您已收到此警告.
我理解头文件std_lib_facilities.h使用某种不推荐使用的函数,但有没有办法绕过这个?看起来它要我定义"_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS",但我不确定如何做到这一点.任何帮助,将不胜感激!!
kfs*_*one 11
警告不是关于"某种功能" - 它是关于整体的stdext.它不仅仅是手工波浪状的,最终会被停产,也不会被弃用:它不会随着2015年出货.
在00年代早期,正在努力修改C++标准; 包括微软在内的不同编译器供应商将提案与原型一起提交给委员会.因此,他们可以进行测试和评估,微软将其提议的扩展实施stdext.
最终,委员会选择了他们将在该修订中纳入的内容,并发布了技术报告("TR1").预计在2009年底之前完成,这被称为"C++ 0x",编译器供应商开始在tr1命名空间中实现这些功能.终于在2011年,标准最终确定了,我们得到了"C++ 11",其所有的部分和碎片都回到了std它们所属的位置.
根据微软的提议,容器将是std::hash_map,但C++委员会选择使用该术语unordered_map.std::map是一个有序的容器,stdext::hash_map尽管名称,但不是.
微软的编译器在获得完整的C++ 11支持方面是最慢的,标准委员会已经完成了第二个变体(C++ 14)并且正在开发第三个变量(C++ 17).微软只是关于完成VS2015中的C++ 11以及大量的C++ 14,其中有一些重要的例外显然是VS编译器的主要问题(特别是constexpr和模板变量).
Visual Studio 2015没有提供stdext- 它已经消失了.这不是那些"好吧,它可能最终消失"的案例之一.
stdext特定于Microsoft系列编译器,因此使用stdext::任何东西编写代码都不可移植:http://ideone.com/x8GsKY
您想要的功能的标准化版本是std :: unordered_map,您应该使用它.这基本上是一回事.
还有未解决的错误stdext::hash_map.
如果你真的必须使用stdext::hash_map,请通过添加来消除警告
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
Run Code Online (Sandbox Code Playgroud)
在stdafx.h我假设您的项目的顶部,或在您之前的头文件中#include <stdext/...>,或在解决方案资源管理器中:
All Configurations,C/C++树条目,Preprocessor,<different options>_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1;以便读取_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1;<different options>.(或者原本应该遵循的任何东西;)| 归档时间: |
|
| 查看次数: |
8816 次 |
| 最近记录: |