ASSERT宏-基于单片机编程开发

/*
---------------------------------------------------------------
文件名称:ASSERT.h
说    明:ASSERT宏
作    者:温子祺
创建时间:2010-08-06
联系方式:[email protected]
博    客:
http://www.cnblogs.com/wenziqi/
小    组:
http://group.ednchina.com/2748/
官    网:www.smartmcu.com
---------------------------------------------------------------
*/

  

1:字符串打印函数

  

代码
   
     
/* *****************************************************
*文件名称:UARTPrintfAssertFail
*输 入:fmt 字符串
*输 出:无
*功能说明:串口 打印字符串
用于打印断言失败
******************************************************
*/
void UARTPrintfAssertFail(CHAR * fmt, ...)
{
va_list ap;
CHAR
string [ 256 ];

va_start(ap,fmt);
vsprintf(
string ,fmt,ap);
UARTPrintfString(
string );
va_end(ap);
while ( 1 );
}

 

 

  2:字符替换变为ASSERT宏

 

代码
   
     
#define assert_fail UARTPrintfAssertFail

#define ASSERT(p) do{p ? (void)0:\
assert_fail(
" \r\nAssert fail at " #p " " __FILE__ " Line %d\r\n " ,__LINE__);\
}
while ( 0 )

 

 

3:测试演示

  

 

例1:ASSERT(1==2);

 

显示结果:

Assert fail at 1==2 main.c Line 126

 

 

 

例1:ASSERT(2==2);

 

 

 

显示结果:无显示,直接执行(void)0;

 

 

 

 

 

转载请注明出处,谢谢!

 

 


 

 

你可能感兴趣的:(assert)