在看APUE的时候发现typedef有些声明让我感觉很陌生,就在网上找相关blog看了下,也写了点如下的笔记.
define
define 是宏,是在预处理阶段用宏来替换字符串.
#define 与编译器无关,单纯进行无脑替换.
1 |
|
typedef
typedef属于编译的一部分,可以定义中类型的别名,而不是简单的宏替换,能够起到代码整洁的作用.
- 数组
1 | typedef int A[]; // 定义一个名为A的ints数组的类型 |
主要说明下typedef在处理复杂类型时候的用法.
- 函数
1 | typedef int f();//定义一个名为f, 参数为空,返回值为int的函数类型 |
1 | void (*signal(int signo,void (*func)(int)))(int) |
typedef与const组合使用
1 | typdef char * pStr; |
typedef的作用是:任何声明变量的语句前面加typedef之后,原来是变量的都变成了一种类型.
const pStr ==> const (char *) 这里就类似于 const int i = 1;
这里的const 直接修饰 i ,所以不能对 i进行修改, 由于p2 不是指针 也是如此,const修饰的是p2.