2010년 1월 25일 월요일

2. 임포트

2. 임포트

 

새로운 프리프로세서 명령

Objective-C 언어는 C언어의 위에서 확장된 언어이기 때문에, C언어가 그대로 사용가능합니다. 보다 정확히는, Objective-C의 존재는 언어사양의 확장이 아니라, 컴파일러의 확장으로 최종적으로는 컴파일러는 Objective-C 언어의 코드를 C언어의 코드로 변환해서 처리합니다. 사실, 추가되어진 형이나 예약어도 사실상은 헤더파일에 #define 나 typedef 에 의해 정의되어 있는 것에 지나지 않습니다.


그래서, Objective-C 를 적절히 실행한는 것에는 정해져있는 헤더파일을 인클루드하지 않으면 안됩니다.Objective-C 에 새롭게 추가된 형이나 식별자는 objc/objc.h 헤더파일에 정의되어져 있습니다. 단, 이 헤더파일에 정의되어져 있는 기능은 Objective-C에 필요한 최소한의 것 뿐으로, 일반적으로는 컴파일러가 제공하는 총합적인 헤더파일을 인클루드하는 습관이 있습니다. GCC컴파일러에는 objc/Object.h 헤더파일을 Mac OS 의 Cocoa 개발환경에는 Foundation/NSObject.h 헤더파일을 인클루드하지 않으면 안됩니다.


Objective-C 컴파일러에는 존재하지 않는 코드를 기술하는 것에는 objc/objc.h를 인클루드합니다. 단, 이 기능만으로는 코드를 적을수 없기 때문에, 이때는 objc/Object.h를 인클루드합니다. 어째서 확장된 헤더파일이 필요한가에 대해서는 바로 뒤에 해설합니다.


Objective-C 에는 #include 프리프로세서디렉티브 대신 새로운 명령 #import 프리프로세서디렉티브 가 추가되어있습니다. 이 명령은 #include처럼 헤더파일을 인클루드합니다만, 한번 인클루드된 파일을 다시 인클루드 하지 않습니다. 그 이외에 대해서는 #include와 같은 기능입니다.


#import <헤더파일>

#import "헤더파일"


C 언어전용의 헤더파일을 인클루드할 때는 주의하지 않으면 안되지만, 많은 경우는 헤더파일을 다중인클루드할 필요는 없을 것입니다. 많은 헤더파일은 다중인클루드를 방지하기 위하여 프리프로세서명령을 지정하고 있을 것이기 때문에 #import라도 문제없을 것입니다.

이 이외에 대해서는 종래의 C언어와 같기 때문에 stdio.h 헤더파일을 인클루드해서 printf()등의 표준함수를 이용하는 일이 가능합니다. 단, Objective-C언어의 소스파일의 확장자는 원칙적으로 *.m 이라고 정해져 있습니다.

#import <stdio.h>

#import <objc/Object.h>


int main() {

    printf("the World 시간이여 멈춰랏!\n");

    printf("WRYYYYYYYYYYYYーーーー\n");


    return 0;

}


이 프로그램을 보면 알겠지만, 실제로 C언어와 차이가 없습니다. Objective-C 는 C언어를 완전히 계승하고 있는 것입니다. C언어와 비슷한 언어가 아니라, 완전히 C언어와 호환성이 있습니다.


덧붙여, C언어의 코멘트 /* */ 에 추가하여, Objective-C에는 일행코멘트 // 가 추가되어 있습니다. 이 코멘트는 C++언어의 코멘트와 같이, C언어의 처리계에도 독자사양으로 채용되어있는 컴파일러도 많으므로, 모두들 알고 있을 것입니다.


//코멘트


Objective-C 에서는 이 코멘트를 사용할 수 있습니다.

 

 

원본 : http://wisdom.sakura.ne.jp/programming/objc/objc2.html

댓글 없음:

댓글 쓰기