位置:首頁 > 高級語言 > Objective-C教學 > Objective-C typedef

Objective-C typedef

Objective-C編程語言提供 typedef 關鍵字,可以用一個新的名字給一個類型。下麵是一個例子定義一個術語 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 = @"TutorialsYiibai";
   book.subject = @"Programming tutorial";
   book.book_id = 100;
   NSLog( @"Book title : %@
", book.title);
   NSLog( @"Book author : %@
", book.author);
   NSLog( @"Book subject : %@
", book.subject);
   NSLog( @"Book Id : %d
", 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 : TutorialsYiibai
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 和 #define

#define是一個Objective-C 的指令,它也被用來定義彆名為各種數據類型類似 typedef,但有以下差異:

  • typedef類型和#define 可以被用來定義彆名值以及符號名,一樣可以定義 ONE 為 1,等等。

  • typedef的解釋是由編譯器在#define語句預處理器處理。

下麵是 #define一個最簡單的用法:

#import <Foundation/Foundation.h>
 
#define TRUE  1
#define FALSE 0
 
int main( )
{
   NSLog( @"Value of TRUE : %d
", TRUE);
   NSLog( @"Value of FALSE : %d
", 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