ASSERT我设不了断点,请问我怎么能看到实实在在的ASSERT输出什么
liu xinran,
您好!
StellarisWare中ASSERT的定义如下:
#ifdef DEBUG
#define ASSERT(expr) { \
if(!(expr)) \
{ \
__error__(__FILE__, __LINE__); \
} \
}
#else
#define ASSERT(expr)
#endif
__error__(__FILE__, __LINE__)函数;传递文件名称和ASSERT宏调用的行编号。如果断言出错了会有相应的错误信息的文件名和行编号显示在console中
Driverlib中的ASSERT默认是不编译的,所以你无法设置断点。如果你想在ASSERT中设置断点,必须编译这段代码。
所以你需要在代码或者编译器种定义DEBUG,如果你使用IAR,可以按照下图设置定义DEBUG
另外DEBUG.h文件中的_error_这段代码可以根据你的需要改成相关代码,比如打印相应信息,以便于调试:
#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在大多数C语言程序中都提供支持,主要是用来在Debug模式下对某些条件进行保证,在正常编译时不会影响程序运行效率,也不会增大代码体积。所以楼主只需要定义DEBUG模式就可以了:
#define DEBUG
这样也是一样的。