У меня есть enum под названием RandomEnum в файле foo.h:
// foo.h
typedef enum RandomEnum {
ran_1 = 0,
ran_2
} RandomEnum;
В другом файле, bar.h, я пытаюсь использовать RandomEnum в качестве типа параметра:
// bar.h
#import "foo.h"
@interface bar : NSObject {}
-(RandomEnum)echo:(RandomEnum)ran;
@end
Однако компилятор, кажется, не признает RandomEnum. Делает это даже возможное?
Ошибка компилятора:
error: expected ')' before 'RandomEnum'
Править: Добавленный кодекс для foo.h для разъяснения
Оказывается, это все-таки возможно. Моя проблема была связана со странными перекрестными включениями, которые не были прямыми, но все еще присутствовали.
В приведенном примере foo.h включал вещь.h, которая включала что-то.h, что включало bar.h. Эта кросс-зависимость и стала проблемой.
Тем не менее, хорошо знать об ошибках компилятора. Спасибо за ответы!
Конструкция C enum RandomEnum
не определяет тип, называемый RandomEnum
- она определяет тип, называемый enum RandomEnum
. Чтобы иметь возможность написать просто RandomEnum
для этого типа, нужно использовать typedef.
Как сказал @Chuck, это будет работать, если вы сделаете это, если не хотите объявлять typedef
:
-(RandomEnum)echo:(enum RandomEnum)ran;