typedef
这是我们常用的比较简单的typedef的用法:
typedef struct{
uchar uc_Mchn[ TRC_DIGIT_MCHN ];
uchar uc_Dstn[ TRC_DIGIT_DSTN ];
ulong ul_edDecSN;
}stTrcOrgData;
函数指针的形式
形式1:返回类型(*函数名)(参数表)
char (*pFun)(int);//定义一个函数指针pFUN,它指向一个返回类型为char,有一个整型的参数的函数
/*定义一个返回类型为char,参数为int的函数
我们知道,函数名称就是函数的地址
*/
char glFun(int a)
{
printf(%s,'这是一个函数')
}
int main()
{
pFun = glFun;//将函数glFun的地址赋值给变量pFun
(*pFun)(2);//*pFun”显然是取pFun所指向地址的内容,当然也就是取出了函数glFun()的内容,然后给定参数为2。
return 0;
}
形式2:typedef 返回类型(*新类型)(参数表)
1.typedef定义了一个PTRFUN
类型的函数类型,这个类型的参数是int,返回值是char
2.定义pFun为PTRFUN类型
3.将glFun函数的地址赋值给pFun
typedef char (*PTRFUN)(int);
PTRFUN pFun;
char glFun(int a){ return;}
void main()
{
pFun = glFun;
(*pFun)(2);
}
例子
static void boot_jumpToApl( void )
{
typedef void (*ENTRY)(void);
ENTRY aplEntry = (ENTRY)*(volatile ulong *)(BOOTDEF_APL_VECTORS_BEGIN + 4);
// Reset MSP & PSP before jump
__set_PSP(APP_PSP_INITIAL_VALUE);
__set_CONTROL(0);
__set_MSP(APP_MSP_INITIAL_VALUE);
aplEntry();
}
0x08020000
BOOTDEF_APL_VECTORS_BEGIN