2009-12-29 5 views
9

나는 파일 foo.h에 RandomEnum라는 이름의 열거가 : 다른 파일에서 Objective-C의 외부 파일에서 enum을 매개 변수로 사용 하시겠습니까?

// 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' 

편집 : C는 RandomEnum라는 형식을 정의하지 않습니다 enum RandomEnum를 구성 해명

+0

그 코드를 복사하여 문제를 보여주는 것 몇 가지 소스에서 직접 붙여 넣을 수 있나요? 방금 코드를 컴파일 했으므로 제대로 작동했습니다. – Chuck

+0

내 Mac에서 코드가 잘 컴파일되었습니다 (10.6). 범위에서 NSObject를 얻으려면 # #port 을 했습니까? – Yuji

답변

5

결국 이것은 가능합니다. 내 문제는 직접적인 것이 아니지만 여전히 존재하는 이상한 교차 포함과 관련이 있습니다.

예제에서 foo.h에는 thing.h가 포함되어 있으며 여기에는 bar.h가 포함 된 something.h가 포함되어 있습니다. 이 상호 의존성 때문에 결국 문제가되었습니다.

여전히 컴파일러 버그를 잘 알고 있습니다. 답변 주셔서 감사합니다!

12

에 대한 foo.h에 대한 추가 코드는 - 그것은 enum RandomEnum라는 유형을 정의합니다. 유형에 대해 RandomEnum 만 쓸 수 있으려면 typedef를 사용해야합니다.

+0

답변 해 주셔서 감사합니다. 나는 foo.h에 typedef를 사용하고 있음을 분명히 했어야한다. – mindeavor

3

는 @Chuck는이 작업을 수행 할 경우 선언하지 않으려는 경우가 작동 말했다 같이 typedef :

-(RandomEnum)echo:(enum RandomEnum)ran; 
관련 문제