标准C中的断言函数assert(),如果断言函数的参数为0时将触发断言函数的执行,会在运行时程序崩溃。
我从FreeRTOS中学到,FreeRTOS中的断言函数configASSERT()和标准C中的断言函数assert()是一样的,
我们可以重新利用他,下面我用一个简单的程序实例,来学习下。
#include<stdio.h>
#include<stdlib.h>
//#include<assert.h>
#define configASSERT(x) if((x) ==0){printf("错误代码位置:%s\n行数:%d\n",__FILE__,__LINE__),exit(1);}
struct ITEM{
int key;
int value;
};
void additem(struct ITEM *itemptr){
configASSERT(itemptr != NULL);
// assert(itemptr != NULL);
printf("additem\n");
}
void main()
{
//struct ITEM *item = (struct ITEM*)malloc(sizeof(struct ITEM));
struct ITEM *item = NULL;
additem(item);
printf("main\n");
}