2009-12-29 15 views
9

tengo una enumeración llamado RandomEnum en foo.h archivo:¿Cómo usar las enumeraciones como parámetros en un archivo externo en Objective-C?

// foo.h 
typedef enum RandomEnum { 
    ran_1 = 0, 
    ran_2 
} RandomEnum; 

En otro archivo, bar.h, estoy tratando de utilizar RandomEnum como un tipo de parámetro:

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

@interface bar : NSObject {} 
    -(RandomEnum)echo:(RandomEnum)ran; 
@end 

Sin embargo, el compilador no parece reconocer RandomEnum. ¿Esto es posible?

Compiler Error:

error: expected ')' before 'RandomEnum' 

Editar: Añadido código para foo.h de aclaración

+0

se copia ese código y pegar directamente de una fuente que está mostrando el problema? Porque acabo de compilar tu código y funcionó bien. – Chuck

+0

Tu código compilado muy bien en mi Mac (10.6). ¿Importó # # 'para obtener NSObject en el alcance? – Yuji

Respuesta

5

Resulta que esto es posible después de todo. Mi problema tenía que ver con inclusiones cruzadas extrañas que no eran directas, pero que aún estaban presentes.

En el ejemplo dado, foo.h incluía thing.h que incluía algo.h que incluía bar.h. Esta dependencia cruzada es lo que terminó siendo el problema.

Aún así, es bueno saber si hay errores del compilador. Gracias por las respuestas!

12

El C construir enum RandomEnum no define un tipo llamado RandomEnum - que define un tipo llamado enum RandomEnum. Para poder escribir solo RandomEnum para el tipo, necesita usar un typedef.

+0

Gracias por su respuesta. Debería haber aclarado que estoy usando un typedef en foo.h – mindeavor

3

Como se ha dicho @Chuck, funcionará si lo hace si no desea declarar un typedef:

-(RandomEnum)echo:(enum RandomEnum)ran; 
Cuestiones relacionadas