iOS typedef #define的区别和使用

一、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使用注意点

  1. define是文本替换,属于预编译指令,本身不参与编译,除非希望替换的文本中有;,否则不用加。typedef是类型替换,语句的一种,结尾必须有;

  2. define写在方法/函数中则作用域从写的地方开始有效,直至使用#undef(不写此指令后面一直有效)。typedef写在方法/函数中,则作用域只在此方法/函数中有效。

  3. 若使用typedef char * MyString;则MyString s1,s2 等价于 char *s1;char * s2
    若使用#define MyString char * 则MyString s1,s2 等价于char *s1,s2; 即char *s1; char s2;

你可能感兴趣的:(iOS typedef #define的区别和使用)