Objective-C程式設計語言提供了一個名稱為typedef
的關鍵字,可以使用此關鍵字為型別指定新名稱。 以下是為單位元組數位定義術語BYTE
的範例 -
typedef unsigned char BYTE;
在此型別定義之後,識別符號BYTE
可以用作unsigned char
型別的縮寫(或別名),例如:
typedef unsigned char BYTE;
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程式設計";
book.author = @"Yiibai";
book.subject = @"程式設計教學";
book.book_id = 10010;
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;
}
執行上面範例程式碼,得到以下結果:
2018-11-15 09:16:30.201 main[189222] Book title : Objective-C程式設計
2018-11-15 09:16:30.203 main[189222] Book author : Yiibai
2018-11-15 09:16:30.203 main[189222] Book subject : 程式設計教學
2018-11-15 09:16:30.203 main[189222] Book Id : 10010
#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;
}
執行上面範例程式碼,得到以下結果:
2018-11-15 09:19:32.915 main[68468] Value of TRUE : 1
2018-11-15 09:19:32.917 main[68468] Value of FALSE : 0