#if defined(_MSC_VER)#define ShouldNotUse(msg) _Pragma("warning(error:4996)") [[deprecated(msg)]] _Pragma("warning(warning:4996)")#else#if defined(__GNUC__)#define ShouldNotUse(msg) [[deprecated(msg)]] __attribute__((error(msg)))#else#define ShouldNotUse(msg)#endif#endif
所以如果使用被这个macro修饰的方法时
ShouldNotUse("denied") void test(){}int main(){ test();}
就会抛出编译期异常, 如果不调用就不会 playground
主要用于禁掉派生类里的成员方法(因为有继承, 所以不能直接=delete
)