Iphone Objective-C中的typedef枚举语句在哪里?
我担心这是一个基本问题。下面的代码可以工作,并且可以识别typedef枚举,但是我收到一条警告消息“空声明中无用的存储类说明符”。我在这里做错了什么吗?这是放置typedef枚举的最佳位置吗Iphone Objective-C中的typedef枚举语句在哪里?,iphone,objective-c,ios,Iphone,Objective C,Ios,我担心这是一个基本问题。下面的代码可以工作,并且可以识别typedef枚举,但是我收到一条警告消息“空声明中无用的存储类说明符”。我在这里做错了什么吗?这是放置typedef枚举的最佳位置吗 #import <UIKit/UIKit.h> #import "CoreDataBaseTableViewController.h" typedef enum ColourType { BACKGROUND=1, LOW=2, HIGH=3, EXTRA=4
#import <UIKit/UIKit.h>
#import "CoreDataBaseTableViewController.h"
typedef enum ColourType {
BACKGROUND=1,
LOW=2,
HIGH=3,
EXTRA=4
};
@interface ColourList : CoreDataBaseTableViewController <NSFetchedResultsControllerDelegate> {
NSManagedObjectContext* moc;
NSFetchedResultsController* fetchedResultsController;
...
enum ColourType colourTarget;
}
...
#导入
#导入“CoreDataBaseTableViewController.h”
typedef枚举颜色类型{
背景=1,
低=2,
高=3,
额外=4
};
@界面颜色列表:CoreDataBaseTableViewController{
NSManagedObjectContext*主运行中心;
NSFetchedResultsController*fetchedResultsController;
...
枚举colortype colortarget;
}
...
删除typedef
,或者为类型提供别名:
typedef enum X {...} Y;
是的,它可以正常工作,因为目标c只是c的超集。必须为枚举提供别名,如下所示:
typedef enum ColourType {
BACKGROUND=1,
LOW=2,
HIGH=3,
EXTRA=4
} MyColourType;
您可以在Objective-C中的任意位置放置枚举,该枚举在C中有效。您现在拥有它的位置(在接口上方)是枚举的常见位置,该位置应该是全局可用的。警告是因为您正在使用
typedef
,但实际上没有定义类型。如果您只是想创建一个枚举,则不必这样做。您只需使用:
enum ColourType {
BACKGROUND=1,
LOW=2,
HIGH=3,
EXTRA=4
};
您可以使用typedef
定义一个类型,这样可以更容易地引用常用的结构/联合/枚举/其他类型。如果选择执行此操作,则应在枚举定义后放置类型的名称,然后可以通过使用该名称而不使用enum
关键字来引用枚举
typedef enum ColourType {
BACKGROUND=1,
LOW=2,
HIGH=3,
EXTRA=4
} MyColourType;
MyColourType colour;
或者,可以创建枚举并在具有相同效果的单独命令中键入
enum ColourType {
BACKGROUND=1,
LOW=2,
HIGH=3,
EXTRA=4
};
typedef enum ColourType MyColourType;
顺便考虑一下,使用Objto-C的代码> NSnEnUM< /Cord>Me宏。把它拿走,
::广告拿起话筒时,礼貌地鼓掌:
NS_ENUM
和NS_OPTIONS
宏提供了一种用C语言定义枚举和选项的简洁方法。这些宏改进了Xcode中的代码完成,并显式指定了枚举和选项的类型和大小。此外,此语法声明枚举的方式可以由较旧的编译器正确计算,也可以由能够解释底层类型信息的较新编译器正确计算
语法示例:
typedef NS_ENUM(NSInteger, DRWColourType) {
DRWColourTypeBackground,
DRWColourTypeLow,
DRWColourTypeHigh,
DRWColourTypeExtra
};
为什么
此方法结合了上述所有方法中的最佳方法,甚至为编译器提供类型检查和switch语句完整性提示
警告指向哪一行?有两行,以及typdef的开始和结束,但问题现在已解决。请在查看时查看。非常感谢。事情要清楚得多。在FORTRAN77中,我们没有这些,所以它是全新的好东西。