用法一 atom
使用Typedef定義一種類型的別名,而不僅是簡單的宏替換。能夠用做同時聲明指針型的多個對象。好比: spa
char* pa, pb; // 這多數不符合咱們的意圖,它只聲明瞭一個指向字符變量的指針,和一個字符變量; 指針
// 如下則可行: 對象
typedef char* PCHAR; get
PCHAR pa, pb; 源碼
這種用法頗有用,特別是char* pa, pb的定義,初學者每每認爲是定義了兩個字符型指針,其實不是,而用typedef char* PCHAR就不會出現這樣的問題,減小了錯誤的發生。 變量
用法二 float
用typedef來定義與平臺無關的類型。好比定義一個叫 REAL 的浮點類型,在目標平臺上,讓它表示最高精度的類型爲: 跨平臺
typedef long double REAL; co
在不支持 long double 的平臺二上,改成:
typedef double REAL;
在連 double 都不支持的平臺三上,改成:
typedef float REAL;
也就是說,當跨平臺時,只要改下 typedef 自己就行,不用對其餘源碼作任何修改。
用法三
能夠使用typedef定義一個Block的類型,便於在後續直接使用,如:
eg:typedef double(^MyBlock)(double, double); 定義MyBlock的類型
MyBlock area = ^(double x, double y) {
return x * y;
};
MyBlock sum = ^(double a, double b) {
return a + b;
};
NSLog(@"%.2f", area(10.0, 20.0));
NSLog(@"%.2f", sum(10.0, 20.0));//上面是使用
eg:typedef void(^myBlock)(int a, int b);//定義myBlock類型
@property(strong, nonatomic) myBlock b_myblock;//聲明myBlock一個變量
- (void)getTwoNumber:(myBlock)b_myblock;
參考:http://q.maiziedu.com/article/11421/