假设在很久以前,我已经创建了以下枚举:如何声明一个枚举值作为的ObjectiveC被弃用(2.0)
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricSquare,
GeometricRectangle,
GeometricCircle
}GeometricFigures;
我我真棒引擎中引入了那些在不久前和现在我终于决定,人们不应该再使用GeometricSquare
,因为GeometricRectangle
已经涵盖了这一点。
一开始,我可能会改变我的枚举对这样的事情:
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
,肯定会保持我的真棒引擎向后兼容,但是,从另一方面增加了遗留垃圾。因此,我想在可预见的将来彻底删除GeometricSquare
。为了让我的引擎的用户明白,我想将GeometricSquare
标记为已弃用。
我的目标是文档(doxygen)以及代码完成(Xcode)和最后但并非最不重要的编译器(GCC)将使用户明白GeometricSquare
不应再被使用并且已被替换通过GeometricRectangle
。
对于文档,我会简单地使用@deprecated
关键字;
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
///@deprecated Has been replaced by GeometricRectangle
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
但是Xcode和GCC怎么样?
不幸的是,通常的GCC(方法)属性似乎没有完成这项工作。如下文所述添加__attribute__((deprecated))
会导致语法错误。
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle __attribute__((deprecated)),
解析问题 预计}
GeometricCircle
}GeometricFigures;
所以很明显,要么不完全工作,或者我只是用错了。
可能重复[C++的将枚举值标记为已弃用?](http://stackoverflow.com/questions/5488057/c-mark-enum-value-as-deprecated) – lpapp 2013-10-31 20:10:49