C語言中,斷言的使用
阿新 • • 發佈:2019-01-27
標準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"); }