새로운 프리프로세서 명령

Objective-C 언어는 C 언어위에 확장된 언어이므로, C 언어를 그대로 사용할 수 있습니다. 보다 정확하게는, Objective-C 의 존재는 언어 사양의 확장이 아니고, 컴파일러의 확장이며, 최종적으로 컴파일러는 Objective-C 언어의 코드를 C 언어 코드로 변환해서 처리하고 있습니다. 사실, 추가된 형태나 예약어(reserved word)도, 사실상은 헤더 파일로 #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 에는 #inlucde 프리프로세서 지시문에 대신하는 새로운 명령 #import 프리프로세서 지시문이 추가되고 있습니다. 이 명령은 #include 와 같이 헤더 파일을 인클루드 합니다만, 한 번 인클루드 된 파일은 재 인크루드 하지 않습니다. 그 이외 대해서는 #include와 같은 기능입니다.

#import <헤더 파일>
#import "헤더 파일"

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

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

#import <stdio.h>
#import <objc/Object.h>

int main() {
	printf("쟈. 세계시간아 멈춰!\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
번역의 귀차니즘으로 번역기 돌린 후 원문과 대조하면서 어색한 부분만 재수정한겁니다.
어휘 사용에서 다소 어색한 부분이 있더라도 양해바랍니다.

Posted by tklee

댓글을 달아 주세요