Используя enums как параметры во внешнем файле в Цели-C?

У меня есть 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 для разъяснения

9
задан mindeavor 29 December 2009 в 23:41
поделиться

3 ответа

Оказывается, это все-таки возможно. Моя проблема была связана со странными перекрестными включениями, которые не были прямыми, но все еще присутствовали.

В приведенном примере foo.h включал вещь.h, которая включала что-то.h, что включало bar.h. Эта кросс-зависимость и стала проблемой.

Тем не менее, хорошо знать об ошибках компилятора. Спасибо за ответы!

5
ответ дан 4 December 2019 в 10:32
поделиться

Конструкция C enum RandomEnum не определяет тип, называемый RandomEnum - она определяет тип, называемый enum RandomEnum. Чтобы иметь возможность написать просто RandomEnum для этого типа, нужно использовать typedef.

.
12
ответ дан 4 December 2019 в 10:32
поделиться

Как сказал @Chuck, это будет работать, если вы сделаете это, если не хотите объявлять typedef:

-(RandomEnum)echo:(enum RandomEnum)ran;
3
ответ дан 4 December 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: