typedef unsigned int bool;
// 第一种方法:宏定义,好处是简单方便,坏处是编译器不能帮我们做参数的静态类型检查。
#define CopySDMMCtoMem(z,a,b,c,e)(((bool(*)(int, unsigned int, unsigned short, unsigned int*, bool))(*((unsigned int *)0xD0037F98)))(z,a,b,c,e))
// 第二种方法:用函数指针方式调用
typedef bool(*pCopySDMMC2Mem)(int, unsigned int, unsigned short, unsigned int*, bool);
// 实际使用时
pCopySDMMC2Mem p1 = (pCopySDMMC2Mem)0xD0037F98;
p1(x, x, x, x, x); // 第一种调用方法
(*p1)(x, x, x, x, x); // 第二种调用方法
*p1(x, x, x, x, x); // 错误,因为p1先和()结合,而不是先和*结合。
本文探讨了在特定环境下,通过宏定义和函数指针两种方式调用SDMMC到内存的数据复制函数。宏定义虽简洁但缺乏类型检查,而函数指针则提供了更安全的调用方式。文章详细解释了两种方法的具体实现和调用示例。
1409

被折叠的 条评论
为什么被折叠?



