在Qt 4.7的C++中,是否存在Q_OBSOLETE或Q_DEPRECATED?
或者是否有类似的C++宏或关键字可用?
在Qt 4.7的C++中,是否存在Q_OBSOLETE或Q_DEPRECATED?
或者是否有类似的C++宏或关键字可用?
如果你使用Q_DECL_DEPRECATED,你应该能够得到你想要的结果,例如:
Q_DECL_DEPRECATED void foo();
你可能想自己做类似的事情:
#ifdef Q_TREAT_OBSOLETE_AS_ERRORS
#define Q_OBSOLETE(X) \
BOOST_STATIC_ASSERT(false); \
X
#else
#define Q_OBSOLETE(X) X
#endif
如果没有定义Q_TREAT_OBSOLETE_AS_ERRORS
,则此结构将简单替换一些已弃用代码/部分代码,并在生成编译时错误的情况下。
请注意,BOOST_STATIC_ASSERT
没有作用域限制,因此Q_OBSOLETE
宏也是如此。
可能这不是解决您问题的最佳方式,实际上我不确定这是否有用。
您可以将代码标记为@obsolete
,或者在注释中指出它。
Q_DEPRECATED void myOldFunc();
Q_DEPRECATED_X("use myNewFunc instead") void myOldFunc2();
差别只是文本消息。
此外,C++14以标准形式提供[[deprecated("text")]]
属性。如果使用C++ 14+,似乎会在幕后使用该属性。
__declspec(deprecated)
扩展,我想可以编写一个针对G++ 4.5的编译器插件来添加类似的功能。__attribute__((deprecated))
。 - Ken Bloom[[deprecated]]
关键字,您可以将其添加到某些函数中。http://en.cppreference.com/w/cpp/language/attributes - Joan Marcè i Igual