首页 > 代码库 > typedef type_a(*Pname)(type_b *params);的意思
typedef type_a(*Pname)(type_b *params);的意思
初学嵌入式,看到了这样一行代码: typedef t_error (*pCommandFunc)(uint8 *params);一开始认为typedef后面必须要接两个参数才行,后来发现网上的解释后,才知道这其实就是定义了一个“函数指针”类型。最终的到的是一个叫pCommandFunc的“类型”名。
其中t_error,uint8是之前就有的宏定义类型,而这一行代码其实将pCommandFunc变成了一个函数指针类型,可以用来“定义”一种“指针”,可以指向t_error FunName(unint8 *params)这样结构的函数。以下是从网上找到的例子:
//func.h
int add_(int a,int b)
{
return a+b;
}
int multiply_(int a ,int b)
{
return a*b;
}
int minus_(int a,int b)
{
return a-b;
}
int div_(int a ,int b)
{
return a/b;
}
typedef int (*pfunc)(int ,int);
////////////////////////////////////////////////////////////
//main.cpp
#include <iostream>
#include "func.h"
using namespace std;
int main()
{ int aa =6,
bb=3;
pfunc p = add_; //用pfunc来定义一个指向函数的指针变量,pfunc就是一种类型而已
cout << p(aa,bb) <<endl;
p = multiply_;
cout <<p(aa,bb) <<endl;
p = minus_;
cout <<p(aa,bb) <<endl;
p = div_;
cout <<p(aa,bb) << endl;
return 0; 、
} //感谢网友: zipper9527
typedef type_a(*Pname)(type_b *params);的意思