对大多数程序员来说,代码陈旧是个大问题。这个新属性提供了解决这个问题的系统方法。
在C++14中,增加关键字:deprecated,主要用于管理过时的函数、接口、类等。
它的用法方便又简单—只需要把[[deprecated]]标签放到声明的前面即可—可以是类,变量,函数,或者其他一些实体的声明。结果看起来像这样:
class[[deprecated]]
flaky {};当程序中使用了过时的实体时,编译器的反应是把它留给开发人员。显然,大多数人会希望在需要时看到某种形式的警告,同时在不需要时也能够关掉警告。clang3.4中有一个例子,当实例化一个过时的类时给出了警告:
dep.cpp:14:3:
warning: 'flaky'
is deprecated
[-Wdeprecated-declarations] flaky
f; dep.cpp:3:1:
note: 'flaky'
declared hereflaky
{
你可能已经注意到,C++的attribute-tokens语法看起来似乎有点不常见。包含[[deprecated]]的属性列表,被放在class,enum等关键字之后,实体名之前。
这个标签具有包括消息参数的另一种形式。同样地,如何处理该消息取决于开发人员。显然,clang3.4直接忽略了该消息。因为,如下代码片段的输出中并不包含错误消息:
class[[deprecated]]
flaky {};[[deprecated("Consider
using something other than cranky")]]int
cranky(){ return
0;}int
main(){ flaky
f; return
cranky();}
dep.cpp:14:10:
warning: 'cranky'
is deprecated
[-Wdeprecated-declarations] return
cranky(); ^dep.cpp:6:5:
note: 'cranky'
declared hereint
cranky()

本文介绍了C++14中如何使用deprecated关键字来标记过时的函数、接口、类等实体,并通过实例展示了编译器如何在使用过时实体时给出警告。详细解释了deprecated关键字的用法及其对开发流程的影响。
1013

被折叠的 条评论
为什么被折叠?



