C++标记为弃用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (73)

我在一个接口中有一个方法,我想用可移植的C++来拒绝它。

提问于
用户回答回答于

这应该能起作用:

#ifdef __GNUC__
#define DEPRECATED(func) func __attribute__ ((deprecated))
#elif defined(_MSC_VER)
#define DEPRECATED(func) __declspec(deprecated) func
#else
#pragma message("WARNING: You need to implement DEPRECATED for this compiler")
#define DEPRECATED(func) func
#endif

...

//don't use me any more
DEPRECATED(void OldFunc(int a, float b));

//use me instead
void NewFunc(int a, double b);

但是,如果函数返回类型的名称中有逗号,则会遇到问题。因为这将被前置处理程序解释为将2个参数传递给被弃用的宏。在这种情况下,您将不得不对返回类型进行类型标注。

用户回答回答于

建议

[[deprecated]]
void foo(int);

可以提供一条消息,说明为何不推荐名称或实体:

[[deprecated("Replaced by bar, which has an improved interface")]]
void foo(int);

消息必须是字符串文本。

扫码关注云+社区

领取腾讯云代金券