结构体成员是u8,结构体指针,函数指针。调用函数指针的时候,另外两个成员地址会被改变,代码如下。第一次发贴有什么没做好的地方请见谅
,谢谢了。
1.结构体原型和初始化:
typedef struct
{
uint8_t enableCRC; //crc校验使能
UartBuff* buff; //串口接收缓冲数据
void (*Send)(uint8_t* ,uint16_t ); //串口发送函数
}UartPort;
UartPort uart2={false , &uart2Buff , Uart2SendStr};
2.Uart2SendStr原型:
void Uart2SendStr(uint8_t *pstr,uint16_t strlen)
{
uint16_t i;
for(i=0;i<strlen;i++)
Uart2SendByte(pstr[i]);
}
3.函数调用:
void debug(UartPort* uart)
{
...
uart->Send("123",3);
...
}
函数调用前测试,另外两个成员地址正常,调用后地址变成0x3300,0x0031。