インポート


新しいプリプロセッサ命令

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 には #inlucde プリプロセッサディレクティブに代わる新しいめいれ #import プリプロセッサディレクティブが追加されています。 この命令は、#include 同様にヘッダファイルをインクルードしますが、一度インクルードされたファイルはサイドインクルードすることはありません。 それ以外については #include と同じ機能です。

#import <ヘッダファイル>
#import "ヘッダファイル"

C 言語専用のヘッダファイルをインクルードする場合は注意しなければなりませんが、多くの場合はヘッダファイルを多重にインクルードする必要などないはずです。 多くのヘッダファイルは多重インクルードを防止するためのプリプロセッサ命令を指定しているはずなので、#import でも問題はないでしょう。

これ以外については、従来の C 言語と同じなので stdio.h ヘッダファイルをインクルードして printf() 等の標準関数を利用することができます。 ただし、Objective-C 言語のソースファイルの拡張子は、原則 *.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 ではこのコメントを用いることができます。



前のページへ戻る次のページへ