公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

XMC实验分享之130: 使用deprecated标记过时代码

XMC实验分享之130: 使用deprecated标记过时代码

User12775
Level 5
Level 5
First solution authored First like received

如果一个项目的生命周期很长, 那么不可避免的, 很多接口会更新, 新的需求催生新的接口, 但是旧的接口还在某些场景要使用. 需要逐步淘汰, 而不是一下子全部删除旧的接口. 对于旧的接口, 常见做法:

  1. 使用Comment提醒使用者:

  2. 直接将旧接口注释掉

例子:

//Don't use function(), use functionV2() instead!
void function(void);

void functionV2();

#if 0
void interface(void);
#endif

void interface(void);

很显然,  这两种做法都不算令人满意, 因此造成的开发故障在实际工程中也是层出不穷.

如果你的项目使用现代C++语言开发, 可以考虑使用deprecated这个关键字.

需要提醒下的是, 这个特性是C++14标准增加的, 编译代码时需要检查C++标准在C++14之后才能使用这个特性. 如果你使用最新的工具, 这个条件很容易达到.

        cout << "__cplusplus:" << __cplusplus << endl;

输出:

__cplusplus:201402

或者以上即可.

有必要时编译时指明C++标准:

 g++ test_dep.cpp --std=c++14
最小支持该特性的Clang版本:3.4 
最小支持该特性的GCC版本: 4.9


0 点赞
1082 次查看
3 评论