Ste*_*555 6 c c++ enums objective-c
我在类标题的顶部定义了一个枚举:
enum PresetSeq{kSeqClear=0, kSeqAllBeats, kSeqAllTicks};
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用枚举声明该类的方法时.
-(void)quickSetSeq:(PresetSeq)pattern forChannel:(long)ch;
Run Code Online (Sandbox Code Playgroud)
我在"PresetSeq"之前得到错误:期望')'
如果我输入枚举枚举:
typedef enum {kSeqClear=0, kSeqAllBeats, kSeqAllTicks} PresetSeq;
Run Code Online (Sandbox Code Playgroud)
然后编译器很高兴,但我不记得在C/C++中必须这样做.
enum必须是Obj-C中的typedef吗?
谢谢
史蒂夫
PS - 我看到了关于Obj-C枚举的其他帖子,但不是为什么这个简单的案例失败了.
这些是C enums.(记住Objective-C只是C的严格超集).
要定义枚举类型,必须使用 typedef.
但是,如果您不需要使用独立类型(没有enum前缀)来统一引用该枚举,那么您不需要typedef,您可以像这样声明它:
enum PresetSeq {
kSeqClear,
kSeqAllBeats,
kSeqAllTicks
};
Run Code Online (Sandbox Code Playgroud)
所以,在你的情况下,你可以这样做:
typedef enum {
kSeqClear,
kSeqAllBeats,
kSeqAllTicks
} PresetSeq;
-(void)quickSetSeq:(PresetSeq)pattern forChannel:(long)ch;
Run Code Online (Sandbox Code Playgroud)
或者没有typedef并使用enum PresetSeq如上所示的语法:
-(void)quickSetSeq:(enum PresetSeq)pattern forChannel:(long)ch;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3669 次 |
| 最近记录: |