仅在*调用*不推荐使用的方法时发出警告

时间:2018-07-03 12:01:02

标签: c++ c++11 deprecation-warning

我想在基类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(...)或静态断言并内联它们,或类似的东西……我认为那不值得。 em>

0 个答案:

没有答案