一個多功能的打印函數

/* -------------------------------------------
   * DateCode: 2018年1月23日10:11:17
   * Athor: xiyuan255
   * Version: V1.0
   * Purpose: Println function
--------------------------------------------- */
int8_t arrayElemPrintln(const void *pString, 
                          const void *pArray, 
                          uint8_t length,
                          uint8_t ofBytes) // 1 or 2 and 4 
{
   assert(pString != NULL && pArray != NULL);
   
   if(((ofBytes < 1)||(ofBytes > 4))
        ||(ofBytes > 1 && ofBytes % 2 != 0)) 
      return -1;

   const uint8_t *pData = (uint8_t *)pArray;
   printf("[%s] <", (const char *)pString);
   
   pString = pArray; 
   while (length--) { 
      switch (ofBytes) {
         case 1: printf(" %02X",*pData);	
            break;
         case 2: printf(" %04X",*((const uint16_t *)pData)); 
            break;
         case 4: printf(" %08X",*((const uint32_t *)pData)); 
            break;
      }
      pData += ofBytes;	
   }
   printf(" >length:%d;\r\n",(pData-(uint8_t *)pString)/ofBytes);   
   return 0;
}
/* 這是個Lora項目在使用STM32爲主控芯片下的快速排序的模板函數,
 * 其中: int16_t爲signed short(2bytes)
         uint32_t爲unsigned int(4bytes)
         uint8_t爲unsigned char(1bytes)
   修改對應的類型,可直接使用VS 2010直接編譯 */


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章