首页 > 代码库 > 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);的意思