绝对绕口的一个问题! 求解。
系统中可能使用到两种DataFlash,为MX25系列或者AD45系列。为了保证程序的通用性和自适应性,我定义了一个函数数组DataFlashWrite。//写函数
void (*DataFlashWrite)(uint8 *target_address, uint32 flash_address, uint32 byte_length) =
{
MX25_Write,
AD45_Write
};
问题是现在DataFlashWrite数组是占用RAM空间,我想把数组定义在Code Flash中,如何实现啊,我尝试了几种写法都不对:
尝试1:void (const *DataFlashWrite)(uint8 *target_address, uint32 flash_address, uint32 byte_length)
尝试2:void (const (*DataFlashWrite))(uint8 *target_address, uint32 flash_address, uint32 byte_length)
这么绕口的问题我实在不知道怎么表示了,请大家帮忙! 在线等待.... 先Typedef,然后按照普通变量那样进行声明和操作。
可读性比较强,也比较容易操作。
如果直接声明,应该形如:
void (* const Data...)(blabla);
你要的是指针变量本身是const的,而不是他指向的对象const。 2楼正解
不过我还是被绕的不知道为什么 类比定义int * ptr来理解:
void ()(blabla)是函数的抽象类型,相当于int。
只不过这个类型的Name要写在函数名那个位置而已,也就是(* ptr)写的位置变了。
函数指针从可读性上说,Typedef成普通变量操作更好。
大家不缺少那个变量名 & 不差那一两行代码。
页:
[1]