一、typedef
给对应类型改个名字
//给double取别名为doubleA
typedef double doubleA;
//给man结构体取别名为Oldman。[使用: Oldman m = {"hah"};]
typedef struct Man
{
NSString *name
}Oldman;
//给block取别名HBlock
typedef void(^HBlock) (int a,int b);
二、#define
主要是文本替换
//MyString替换后面的文本
#define MyString @"Hello World !"
//MyString2替换MyString
#define MyString2 MyString
三、typedef和#define使用注意点
define是文本替换,属于预编译指令,本身不参与编译,除非希望替换的文本中有;,否则不用加。typedef是类型替换,语句的一种,结尾必须有;
define写在方法/函数中则作用域从写的地方开始有效,直至使用#undef(不写此指令后面一直有效)。typedef写在方法/函数中,则作用域只在此方法/函数中有效。
若使用typedef char * MyString;则MyString s1,s2 等价于 char *s1;char * s2
若使用#define MyString char * 则MyString s1,s2 等价于char *s1,s2; 即char *s1; char s2;