c++ - 仅在 *调用* 已弃用的方法时发出警告
问题描述
我想在基类中标记一个纯虚方法deprecated
,并在有人尝试在某处调用该方法(或其覆盖)时获得编译器警告,但不是像现在这样,对于覆盖的每个声明 - 因为该方法在基类中是纯虚拟的,所有子类都必须将其实现为可实例化,但这意味着这些覆盖中的每一个都会产生一个(或多个)编译器警告,这有点垃圾输出。因此,我只想在调用方法(或覆盖之一)时才发出警告。
这是否可能以某种方式不跳过箍*?
PS:我使用以下宏将基本方法标记为已弃用:
#if defined(_MSC_VER)
#define DEPRECATED __declspec(deprecated)
#elif defined(__GNUC__) || defined(__clang__)
#define DEPRECATED __attribute__((deprecated))
#else
#pragma message("WARNING: DEPRECATED macro not implemented for this compiler")
#define DEPRECATED
#endif
…我目前正在 VS2015 中编译。如果我仅将基本方法标记为已弃用,并且如果我在基本方法和覆盖上都使用宏,则会输出编译器警告。
*)就像将 message(...) 或静态断言放入每个覆盖的函数定义中并内联它们,或者类似的东西......我认为这不值得。
解决方案
推荐阅读
- unit-testing - 尝试将 UWP 单元测试作为构建管道的一部分运行或使用 vstest 时“无法激活应用程序”
- c# - 如何在asp.net中的不同标签上显示字典项目
- algorithm - 比特流中的模式识别
- python-3.x - 使用 XPath python 在同一 td 中将文本与 href 分开
- css-position - IE11 - 所有元素上的 Balise 对象 pdf
- sql - 仅更新与另一个表中的行不匹配的行
- mqtt - 如何将传感器中的数据加载到 CrateDB 中?
- angular - Angular 6 环境 scss
- java - For-each 循环变量保存 ObservableList 之外的值
- python - 对字典创建的变量感到困惑