【C】typedef 关键字 typedef int (*Operation)(int, int);
目录
- typedef
- 1)基本语法
- 2)基本类型别名
- 3)结构体类型别名
- 4)枚举类型别名
- 5)函数指针类型别名(常用)
- 6)以FreeRTOS代码为例
- 7)总结
typedef
typedef 是C语言中的一个关键字,它的主要作用是创建类型别名。是 type definition(类型定义)的缩写。目的是更清晰地表示数据类型,提高代码的可读性和可维护性。
1)基本语法
typedef 的基本语法如下:
typedef existing_type new_type;
这里 existing_type 是已存在的数据类型,而 new_type 则是你为这个已存在类型创建的别名。
2)基本类型别名
使用 typedef 可以为基本数据类型创建别名,使得代码更易读:
typedef int MyInteger; // 将 int 类型创建别名为 MyInteger
这样,你就可以使用 MyInteger 代替 int:
MyInteger num = 42;
3)结构体类型别名
在结构体的定义中,typedef 可以用于为结构体类型创建别名:
typedef struct {int age;char name[50];
} Person;
这里,Person 就是结构体类型的别名,你可以使用 Person 来声明结构体变量:
Person student1;
4)枚举类型别名
同样,typedef 也可以用于为枚举类型创建别名:
typedef enum {RED,GREEN,BLUE
} Color;
这里,Color 就是枚举类型的别名,你可以使用 Color 来声明枚举变量:
Color favoriteColor = BLUE;
5)函数指针类型别名(常用)
前置知识:函数指针相关知识(指向函数的指针)。
typedef 还可以用于为函数指针创建别名,提高代码的可读性:
typedef int (*Operation)(int, int);
具体解释:
typedef: 创建类型别名。int (*Operation)(int, int): 定义一个函数指针。(函数指针:指向函数的指针)- 整个语句的意思是,
Operation是一个函数指针类型的别名,它可以指向返回类型为int,接受两个int类型参数的函数。
你可以使用 Operation 来声明相应的函数指针变量:
typedef int (*Operation)(int, int); //给函数指针起新名字int add(int a, int b) {return a + b;
}Operation operationPtr = add; //实例一个函数指针,并赋值,让其指向某一个函数
复杂一点的例子:
typedef int (*Operation)(int, int); //给函数指针起一个别名,叫 Operationint add(int a, int b) {return a + b;
}int subtract(int a, int b) {return a - b;
}void processNumbers(int x, int y, Operation operation) { //入口参数是一个函数指针int result = operation(x, y);printf("Result: %d\n", result);
}int main() {Operation addPtr = add; // 声明并赋值函数指针processNumbers(4, 5, addPtr); // 通过函数指针调用函数return 0;
}
这个例子包括了函数指针的声明、赋值、传递,以及通过函数指针调用函数等方面。
6)以FreeRTOS代码为例
typedef void (*TaskFunction_t)( void * ); // 给函数指针类型起新名字,叫TaskFunction_tBaseType_t xTaskCreate( TaskFunction_t pxTaskCode, // 用新名字定义形参,看起来会更简洁。const char * const pcName, const configSTACK_DEPTH_TYPE usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask );
第一行,用 typedef 给函数指针类型起了新名字
第三行,形参1,使用了新类型名定义形参,看起来会更简洁明了。实质形参1 就是一个函数指针,使用时该位置就应该填入一个函数名,而该函数的定义应该满足void xxxx( void * ); 这样的格式,输入参数是一个void指针,返回值是void。
7)总结
通过使用 typedef,可以增强代码的可读性,使得数据类型的含义更加清晰。特别是在处理复杂的数据结构、函数指针等场景时,typedef 能够简化代码,使其更易理解。
总体来说,typedef 是一个在C语言中用于创建类型别名的强大工具,通过它,你可以提高代码的可维护性和可读性,使代码更容易理解。