这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于assert()函数

共2条 1/1 1 跳转至

关于assert()函数

院士
2012-06-30 20:25:19     打赏

关于assert()函数 有部分书籍将其翻译成为断言,其在程序编写起着重要作用。主要为了辅助程序员编写调试程序,为调试提供出错信息指示。下面简单说一下其在stellaris固件库里的应用。 StellarisWare中ASSERT的定义如下: #ifdef DEBUG

#define ASSERT(expr) {                                      \

                        if(!(expr))                        \                         {                                  \

__error__(__FILE__, __LINE__); \

                        }                                  \                     } #else

#define ASSERT(expr)

#endif

__error__(__FILE__, __LINE__)函数;传递文件名称和ASSERT宏调用的行编号。如果断言出错了会有相应的错误信息的文件名和行编号显示在console中

但是我也可以将其更改,如果出错则会打印到监视窗口,示例如下: #ifdef DEBUG

#define ASSERT(expr) {                                      \

                         if(!(expr))                        \                          {                                  \                        

                              printf("\n\r ASSERT: File[%s],Line[%d],Func[%s].\n\r", \

                              __FILE__,__LINE__,__FUNCTION__);\

                         }                                  \                      } #else

#define ASSERT(expr)

#endif 当然,我们在使用assert()函数前一定要预定义DEBUG 或者 #define DEBUG IAR编译器自带的assert.h文件也支持,其会将错误信息打印到 terminal I/O窗口上。  i = 0;   assert(!(i == 0));     //此处检验除数是否为零,是零则报错,并终止程序  i = 100 / i; 程序运行到此处后打印出来的错误信息。   参考:http://www.deyisupport.com.sixxs.org/question_answer/f/57/t/6314.aspx



关键词: 关于     assert     函数    

高工
2012-07-02 00:44:39     打赏
2楼
很好,灰常感谢楼主分享

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]