2011-10-27 3 views
7

확인,이 질문은 "Constants in Objective C"과 관련이 있습니다.전역 상수 파일에서 Objective-C typedef 열거

// Constants.h 
extern int const BOOKS; 
typedef enum SSDifficultyLevel { 
    EASY = 0, 
    MEDIUM = 1, 
    HARD = 2 
} SSDifficultyLevel; 

// Constants.m 
int const BOOKS = 66; 

내 질문 : Constants.h에 거라고 '는 enumtypedef 될 때까지 OK인가

나는 에게 Constants.h 및 해당 Constants.m 파일을 만든? 코드가 잘 컴파일 (아무런 경고 또는 오류가 지금까지)하지만이 올바른 방법은 그것을 관련 질문에 제공된 솔루션을 상수의 정의 및 선언을 분할하는 포함되어 있는지 궁금 해서요.

감사합니다.

답변

3

잘 상수와 열거 형은 다른 용도로 사용됩니다 (명백한 중복이 있지만). 당신이 그 규칙을 어기는 정말 좋은 이유가 없다면, 사람들이 기대하는 것에서 너무 멀리 가지 마세요.

개인적으로, 나는 일반적으로 그 선언을 그들이 사용 된 것과 연관시켜야하므로 "전역 상수 헤더"를별로 좋아하지 않습니다. 예를 들어 Apple의 프레임 워크는 일반적으로 관련 인터페이스 근처에서 열거 형을 선언하고 클래스와 동일한 헤더에 알림 이름을 선언합니다.

이외의 것을 올바르게 신고하셨습니다.

C++ 또는 objC++를 사용하는 경우 이름이 다를 수 있으며 링크 오류가 발생할 수 있으므로 extern을 수정해야합니다.

#if defined(__cplusplus) 
#define MONExternC extern "C" 
#else 
#define MONExternC extern 
#endif 

는 다음과 같이 BOOKS를 선언 할 것이다 :이 같은

뭔가 트릭해야

MONExternC int const BOOKS; 

다른 한 메모를하고, 이것은 단지 당신의 예를 그림에 대한되었을 수도 있습니다 : 이러한 식별자는 매우 짧으며 다른 식별자와 쉽게 충돌 할 수 있습니다.

+1

안녕하세요 저스틴 : 우선 구현을 시작하겠습니다. 귀하의 답변과 의견을 보내 주셔서 감사합니다. 귀하의 도움에 감사드립니다. – rtovars

관련 문제