使用枚举作为Objective-C中外部文件的参数?

min*_*vor 9 enums objective-c

我在文件foo.h中有一个名为RandomEnum的枚举:

// foo.h
typedef enum RandomEnum {
  ran_1 = 0,
  ran_2
} RandomEnum;
Run Code Online (Sandbox Code Playgroud)

在另一个文件bar.h中,我正在尝试使用RandomEnum作为参数类型:

// bar.h
#import "foo.h"

@interface bar : NSObject {}
  -(RandomEnum)echo:(RandomEnum)ran;
@end
Run Code Online (Sandbox Code Playgroud)

但是,编译器似乎不识别RandomEnum.这样做甚至可能吗?

编译器错误:

error: expected ')' before 'RandomEnum'
Run Code Online (Sandbox Code Playgroud)

编辑:添加了foo.h的代码以便澄清

Chu*_*uck 12

C构造enum RandomEnum没有定义一个名为的类型RandomEnum- 它定义了一个名为的类型enum RandomEnum.为了能够只RandomEnum为类型编写,您需要使用typedef.


min*_*vor 5

事实证明这毕竟是可能的.我的问题与奇怪的交叉包含有关,这些交叉包含不是直接的,但仍然存在.

在给定的例子中,foo.h包括thing.h,其中包括something.h,其中包括bar.h. 这种交叉依赖最终成为问题所在.

仍然,很高兴知道编译器错误.谢谢你的回复!