c語言程式設計中 斷言

2021-09-28 21:53:59 字數 850 閱讀 2126

本文除了介紹assert在c語言程式設計的的使用,更重要的是在rtos系統程式設計中,configassert除錯的方法。

首先,介紹assert函式下c程式設計中的使用

測試程式如下:

#include#include#include#includeint max_fun(int *a,int *b)

int main(int argc, const char *ar**)

本例中輸入a的大小控制在大於50,否則程式出錯。

執行結果:

這個是assert在c語言中的簡單應用。

在freertos系統中,與其功能類似的的函式configassert在debug過程佔據這極其重要的位置,特別在程式執行不正常宕機時,可以定位其問題,具體使用方法也很簡單。

freertos 核心中的關鍵點都會呼叫configassert(x),當x 為0 的時候說明有錯誤發生;使用斷言的話會導致開銷加大,一般在除錯階段使用。只需要在freertosconfig.h 檔案中定義configassert()巨集函式即可;

例如:

#define vassertcalled(char,int) printf("error:%s,%d\r\n",char,int)

#define configassert(x) if((x)==0) vassertcalled(__file__,__line__)

如上,程式出錯的地方就會被列印。

注意:此辦法只是除錯程式的一種手段,並不能定位所有的問題。

C語言中斷言ASSERT

我一直以為assert僅僅是個報錯函式,事實上,它居然是個巨集,並且作用並非 報錯 在經過對其進行一定了解之後,對其作用及用法有了一定的了解,assert 的用法像是一種 契約式程式設計 在我的理解中,其表達的意思就是,程式在我的假設條件下,能夠正常良好的運作,其實就相當於乙個if語句 if 假設成...

C語言中,斷言的使用

標準c中的斷言函式assert 如果斷言函式的引數為0時將觸發斷言函式的執行,會在執行時程式崩潰。我從freertos中學到,freertos中的斷言函式configassert 和標準c中的斷言函式assert 是一樣的,我們可以重新利用他,下面我用乙個簡單的程式例項,來學習下。include i...

程式設計中斷言函式作用

編寫 時,我們總是會做出一些假設,斷言就是用於在 中捕捉這些假設。斷言表示為一些布林表示式,程式設計師相信在程式中的某個特定點該表示式值為真,可以在任何時候啟用和禁用斷言驗證 因此可以在測試時啟用斷言而在部署時禁用斷言。同樣,程式投入執行後,終端使用者在遇到問題時可以重新啟用斷言。使用斷言可以建立更...