2009-12-29 53 views
9

Tôi có một enum tên RandomEnum trong tập tin foo.h:Sử dụng enums làm tham số trong một tệp ngoài trong Objective-C?

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

Trong tập tin khác, bar.h, tôi đang cố gắng để sử dụng RandomEnum như một loại tham số:

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

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

Tuy nhiên, trình biên dịch dường như không nhận ra RandomEnum. Làm điều này thậm chí có thể?

Lỗi trình biên dịch:

error: expected ')' before 'RandomEnum' 

Edit: thêm mã cho foo.h để làm rõ

+0

là mã mà sao chép và dán trực tiếp từ một số nguồn đó cho thấy vấn đề này? Bởi vì tôi vừa biên dịch mã của bạn và nó hoạt động tốt. – Chuck

+0

Mã của bạn được biên dịch tốt trên máy Mac (10.6). Bạn có '#import ' để lấy NSObject trong phạm vi không? – Yuji

Trả lời

5

Cuối cùng, điều này có thể xảy ra. Vấn đề của tôi đã phải làm với các giao thoa lẻ không trực tiếp, nhưng vẫn còn hiện diện.

Trong ví dụ đã cho, foo.h bao gồm điều.h bao gồm something.h bao gồm bar.h. Sự phụ thuộc chéo này là điều cuối cùng là vấn đề.

Tuy nhiên, rất tốt để biết lỗi trình biên dịch. Cảm ơn bạn đã trả lời!

12

C xây dựng enum RandomEnum không định nghĩa một loại gọi là RandomEnum - nó định nghĩa một loại gọi là enum RandomEnum. Để có thể viết chỉ RandomEnum cho loại này, bạn cần phải sử dụng typedef.

+0

Cảm ơn câu trả lời của bạn. Tôi nên làm rõ rằng tôi đang sử dụng một typedef trong foo.h – mindeavor

3

Như @Chuck nói, nó sẽ có tác dụng nếu bạn làm điều này nếu bạn không muốn khai báo một typedef:

-(RandomEnum)echo:(enum RandomEnum)ran; 
Các vấn đề liên quan