Til*_*ill 15 enums objective-c deprecated
假设很久以前,我创建了以下枚举:
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricSquare,
GeometricRectangle,
GeometricCircle
}GeometricFigures;
Run Code Online (Sandbox Code Playgroud)
我刚才在我令人敬畏的引擎中介绍了这些内容,现在我终于决定不再使用人GeometricSquare了,因为已经覆盖了GeometricRectangle.
首先,我可能会将枚举更改为以下内容:
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
Run Code Online (Sandbox Code Playgroud)
这肯定会使我的真棒引擎向后兼容,但另一方面会增加传统垃圾.因此,我想GeometricSquare在可预见的将来完全删除.为了让我的引擎用户明白这一点,我想将其标记GeometricSquare为已弃用.
我的目标是文档(doxygen)以及代码完成(Xcode)以及最后但并非最不重要的编译器(GCC)将使用户明显GeometricSquare不再使用并且已被替换GeometricRectangle.
对于文档,我只想使用@deprecated关键字;
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
///@deprecated Has been replaced by GeometricRectangle
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
Run Code Online (Sandbox Code Playgroud)
但Xcode和GCC怎么样?
不幸的是,通常的GCC(方法)属性似乎没有完成这项工作.添加 __attribute__((deprecated))如下所示会导致语法错误.
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle __attribute__((deprecated)),
Run Code Online (Sandbox Code Playgroud)
Parse Issue Expected}
GeometricCircle
}GeometricFigures;
Run Code Online (Sandbox Code Playgroud)
很明显,要么完全不起作用,要么我只是错误地使用它.
Jos*_*ell 19
我认为你将这个__attribute__位附加到赋值运算符的错误一边.这似乎工作正常:
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare __attribute__((deprecated)) = GeometricRectangle,
GeometricCircle
}GeometricFigures;
Run Code Online (Sandbox Code Playgroud)
现在分配GeometricSquare给出一个编译器警告:
int fig = GeometricSquare; //'GeometricSquare' is deprecated
Run Code Online (Sandbox Code Playgroud)
Ben*_*ynn 16
稍后,添加了一个便利宏:
typedef NS_ENUM(NSInteger, GeometricFigures)
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare __deprecated_enum_msg("Squares are for squares. Use GeometricRectangle.") = GeometricRectangle,
GeometricCircle,
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3302 次 |
| 最近记录: |