2012-10-19 2 views
1

내 응용 프로그램에서 매크로를 재정의해야합니다. 나는 이것을 좋아했다.매크로 재정의

-(void)viewDidLoad{ 

#undef kMacro 
#define kMacro @"New Value" 

} 

이 기능 내에서 정상적으로 작동합니다. 이 함수 안에 NSLog을 넣으면 "새로운 값"을 얻습니다. 그러나이 함수 밖에서 또는 다른 클래스에서이 새로운 값을 얻을 수는 없습니다. (나는 오래된 가치를 얻고있다). 매크로를 전역으로 다시 정의 할 수 있습니까?

답변

1

파일에서 매크로를 재정의하는 경우 모든 파일이 별도의 컴파일 단위로 취급되기 때문에 해당 파일에만 유효합니다.

다른 클래스에서 작동하게하려면 헤더 파일을 넣고 # 그것을 사용하려는 모든 파일에 가져와야합니다.

더 나은 여전히 ​​매크로를 사용하고 적절한 C 사용하지 마십시오

const NSString* kMyString = @"New Value"; 

을 한 다음 다른하는 .m 파일의 정상적인 외부 변수로 액세스 할 수 있습니다.

+1

선언은 (중복 적으로) 읽기 전용 NSString 인 (재 지정 가능) 포인터가 아니라 NSString에 대한 읽기 전용 포인터 인 NSString * const kMyString'이어야합니다. http://stackoverflow.com/questions/2917941/how-to-declare-nsstring-constants-for-passing-to-nsnotificationcenter를 참조하십시오. –