c++ - [[deprecated]] 在 Visual Studio 中导致错误而不是警告
问题描述
根据cppreference [[deprecated("message string")]]
我们应该能够使用该符号,但在 VS 中会导致错误。
例如,我不想在 UNICODE 构建中对 ANSI 方法发出警告,反之亦然:
#ifdef UNICODE
[[deprecated("This method does not work well in UNICODE builds")]]
#endif // UNICODE
void f() {}
编译器不允许我编译,但标准说该属性应该允许使用但会发出警告消息。
如何解决这个问题?,顺便说一句。我的项目设置为最大符合标准。
VS违反标准的原因是什么,有没有更好的方法对上述情况发出警告?
解决方案
派对迟到了,但今天早上我花了几个小时。
默认情况下,Visual Studio 和 sdl(安全开发生命周期)编译标志
[[deprecated]]
视为错误。不管你同意与否,他们都是这样做的。
要解决此问题,请转到Configuration Properties -> C/C++ -> Command Line
并添加/sdl /w34996
/wX 部分表示警告的严重性,其余部分是您要报告为警告的错误。
我希望这可以节省人们一些时间。
推荐阅读
- python - 在烧瓶中创建一个查询 Mysql 数据库并返回 json 的 web 服务
- python - 为什么多个列表索引可以与 __getitem__ 一起使用,但不能与 __setitem__ 一起使用
- javascript - 如何编写graphQl模式中行数未知的对象
- c - 文件没有在 C 中关闭和读取访问冲突异常?
- memory-management - 如何在其引导和根分区的两个不同内存之间管理 Linux Yocto 分发映像?
- microsoft-graph-api - 如何通过 API 调用更新 MS Teams 中的状态/状态/可用性?
- wpf - WPF 从 UserControl MVVM 关闭窗口
- python - 在 IDLE 上导入文件(python 代码编辑器)
- flutter - 在 Flutter 中完成数据加载后如何渲染我的小部件
- azure-devops - 无法绘制 AzureDevOps 预测线