| 因最近一段时间太忙,所以很久没有更新博客文章了。今天有一点心得,还是记录在这里吧。
写博文之前祝原我们的国家早日完成救灾任务,祝原四川人民生活的好些,祝原全国人民生活和越来越好。
void assert_failed(uint8* file, uint32 line) { uint8 *str; uint32 fline; *str = *str; fline = fline; //防止编译器报警 str = file; fline = line; while(1); }
以上函数两个参数的含义是:flie:出错所在函数的文件保存路径。
line:出错所在文件的行数。
通过以上两个参数可以查出具体出错的文件和所在文件的行数,这样可以方便调试程序。
#define assert(expr) ((expr) ? (void)0 : assert_failed((uint8 *)__FILE__, __LINE__)) void assert_failed(uint8* file, uint32 line);
以上为宏定义和函数声明。
例如:
void main(void)
{
。
。
。
assert(0);
。
。
。
}
assert(0)只是模仿出错的情况,这样进行调用可以查出具体出错所在的位置,当然实际使用时“0”就会换成具体所定义的参数了。
通过以上应用可以很方便的查出程序出错的位置及原因。
可以说断言语句是程序调试的一个法宝,就看我们能不能熟练使用了。 |