Objective-c-typedef
提供:Dev Guides
Objective-C Typedef
Objective-Cプログラミング言語は、 typedef というキーワードを提供します。このキーワードを使用して、タイプに新しい名前を付けることができます。 以下は、1バイトの数字に対して用語 BYTE を定義する例です-
typedef unsigned char BYTE;
このタイプ定義の後、識別子BYTEは、タイプ* unsigned charの省略形として使用できます。例:*。
BYTE b1, b2;
慣例により、これらの定義には大文字が使用され、ユーザーに型名は実際には記号の略語であることを思い出させますが、次のように小文字を使用できます-
typedef unsigned char byte;
*typedef* を使用して、ユーザー定義のデータ型にも名前を付けることができます。 たとえば、構造体でtypedefを使用して新しいデータ型を定義し、そのデータ型を使用して次のように構造体変数を直接定義できます-
#import <Foundation/Foundation.h>
typedef struct Books {
NSString *title;
NSString *author;
NSString *subject;
int book_id;
} Book;
int main() {
Book book;
book.title = @"Objective-C Programming";
book.author = @"finddevguides";
book.subject = @"Programming tutorial";
book.book_id = 100;
NSLog( @"Book title : %@\n", book.title);
NSLog( @"Book author : %@\n", book.author);
NSLog( @"Book subject : %@\n", book.subject);
NSLog( @"Book Id : %d\n", book.book_id);
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
2013-09-12 12:21:53.745 demo[31183] Book title : Objective-C Programming
2013-09-12 12:21:53.745 demo[31183] Book author : finddevguides
2013-09-12 12:21:53.745 demo[31183] Book subject : Programming tutorial
2013-09-12 12:21:53.745 demo[31183] Book Id : 100
typedef vs #define
#define *はObjective-Cディレクティブです。これは、 *typedef に似ていますが、以下の違いがあるさまざまなデータ型のエイリアスを定義するためにも使用されます-
- typedef は、タイプにのみシンボリック名を与えることに制限されていますが、*#define *は、1をONEなどとして定義できるように、値のエイリアスを定義するためにも使用できます。
- typedef の解釈はコンパイラによって実行され、*#define *ステートメントはプリプロセッサによって処理されます。
以下は、#defineの最も簡単な使用法です-
#import <Foundation/Foundation.h>
#define TRUE 1
#define FALSE 0
int main( ) {
NSLog( @"Value of TRUE : %d\n", TRUE);
NSLog( @"Value of FALSE : %d\n", FALSE);
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
2013-09-12 12:23:37.993 demo[5160] Value of TRUE : 1
2013-09-12 12:23:37.994 demo[5160] Value of FALSE : 0