我在文件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.
事实证明这毕竟是可能的.我的问题与奇怪的交叉包含有关,这些交叉包含不是直接的,但仍然存在.
在给定的例子中,foo.h包括thing.h,其中包括something.h,其中包括bar.h. 这种交叉依赖最终成为问题所在.
仍然,很高兴知道编译器错误.谢谢你的回复!