1. 程式人生 > >C語言中,斷言的使用

C語言中,斷言的使用

標準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");
}