yzou1_10 发表于 2011-11-19 21:41:33

使用抽象数据类型接口函数的例子

/////////////////////////////////////////////////////////////////////////////
//将一块RAM刷一个统一的值
//ptr   指向用户需要刷值的数据块,可以是任何类型
//val   要刷的值
//len   数据块长度(以字节数为单位,而非有意义的原子数为单位)
/////////////////////////////////////////////////////////////////////////////
void   RAMFILL(U8 len, U8 val, void *ptr)
{
   U8 *p = (U8*)ptr ;
   while(len--)
   {
         *p++ = val ;
   }      
}
如果用户使用这个函数来刷unsigned long int型数组,刷成全0xff.则
U32   buffer ;
RAMFILL(sizeof(buffer), 0xff, buffer) ;
用watch窗口看函数单步执行时,buffer中按字节逐个刷成0xff.
如果不使用抽象数据类型,函数接口为void   RAMFILL(U8 len, U8 val, U8 *ptr)
那么用户在刷buffer时必须做强制类型转换,如果buffer是个自定义类型数组,那么更容易出错.
页: [1]
查看完整版本: 使用抽象数据类型接口函数的例子