이 코드는 무엇을 의미합니까?obj-c 헤더에서 extern은 무엇을 의미합니까
여기서 extern은 무엇을 의미하며 어떻게 사용할 수 있습니까? 그것은 대상의 일부입니까? 그것은 프로젝트에서 세계적인가? 어디에 (어떤 헤더에서) 정의되는 것이 중요합니까? 그게 좋은 습관인가요?
이 코드는 무엇을 의미합니까?obj-c 헤더에서 extern은 무엇을 의미합니까
여기서 extern은 무엇을 의미하며 어떻게 사용할 수 있습니까? 그것은 대상의 일부입니까? 그것은 프로젝트에서 세계적인가? 어디에 (어떤 헤더에서) 정의되는 것이 중요합니까? 그게 좋은 습관인가요?
이
통근 여기에서 의미하는 무엇을, 어떻게 /가
사용됩니다 수 있습니다 C. 일반입니까?
extern const NSUInteger Something;
그것은 의미
이 이름 Something
와 VAR 있습니다.
이 유형은 NSUInteger
입니다.
그것은 실행 (extern
)에 포함 된 파일에 다른 곳에 창조에 그 VAR하지만 링크를 작성하지 마십시오
(const
)
#import "Exporter.h"
const NSUInteger Something = 5; // This is the definition for the declaration above.
후
Exporter.h
extern const NSUInteger Something;
Exporter.m :
의 예로 들어 보자 Exporter.m에서 var을 정의하고 exporter.h에서 Extern을 선언 한 externer는 헤더를 가져온 모든 사람이 사용할 수 있습니다.
,Importer.h 또는 Importer.m (또는 Importer.c, 그것은 일반 C. 때문에)는
#import "Exporter.h" (Or #include, since it is plain C.)
// Now the compiler knows that
// there is a global readonly var called Something,
// its type is int, and
// it is readonly.
모든 수입은 하나 VAR를 공유합니다. extern
키워드가 없으면 다른 vars가 있습니다.
개체의 일부입니까?
번호는 정확합니다 : 그것은 ... 내부 @interface …
에 또는 @implementation …
에 속하는 }
{
경우는 바르가 선언된다. 이 작업이 헤더 나 .m 파일에서 수행되는지 여부는 의미가 없습니다.
프로젝트
그것은 당신의 실행 파일의 전역에서이 글로벌입니다. (당신은 정확하지 않은 것을 "프로젝트"라고 부르지 만 괜찮습니다.)
어디에 (어떤 헤더에서) 정의 되나요?
아니요. (컴파일러는 가져 오기를 완료 한 후 텍스트를보고 포함하지만 어디에서 왔는지 전혀 알 수 없습니다.)하지만 한 번역 단위 (".m")에서는 위에 나와있는 Exporter.m과 같은 정의가 있어야합니다.
좋은 사례입니까? 그 중요 - - Exporter.h (및
Something
)을 다루는 소프트웨어의 다른 부분에 예고없이 그 VAR를 변경
extern
VAR 선언의 문제는 Exporter.h 읽을 수 가져 오기 모든 사람들이 있다는 것입니다. 따라서 데이터 흐름을 제어하는 것은 거의 불가능합니다.
요즘 들어 지구의 흙막이 물은 const
덩어리에만 사용됩니다. 귀하의 Q와 마찬가지로 바이스는 변경할 수 없습니다. 따라서 문제는 없으며 일반적으로 받아 들여지는 방법입니다.
철저한 답변을 부탁드립니다. –
안녕하세요. –