首页 > 技术文章 > C学习笔记-typedef

cj5785 2019-04-02 23:03 原文

typedef是一种高级数据特性,它能使某一类型创建自己的名字

typedef unsigned char BYTE;
typedef struct man MAN;
BYTE b = 0x12;
  1. #define不同,typedef仅限于数据类型,而不是能是表达式或具体的值
  2. typedef是编译器处理的,而不是预编译指令
  3. typedef#define更灵活

直接看typedef好像没什么用处,使用BYTE定义一个unsigned char。使用typedef可以增加程序的可移植性

通过typedef定义函数指针
函数原型及调用

const char *getsubstr(const char *src, const char *str)
{
	return strstr(src, str);
}
const char *func(const char *(*s)(const char *, const char *), const char *src, const char *str)

使用typedef以后的函数调用

const char *getsubstr(const char *src, const char *str)
{
	return strstr(src, str);
}
typedef const char *(*SUBSTR)(const char *, const char *);
const char *func(SUBSTR p, const char *src, const char *str);

在程序当中如果是定义一个可读的常量,适合用#define
如果定义的是一个具体的数据类型,那么typedef更加适合。
如果是定义一个函数指针,那么基本就typedef

推荐阅读