2012-06-14 58 views
0

是否有一個verify()函數(如msvc中的VERIFY())或類似的標準c庫中,還是我必須編寫自己的?如果是這樣,哪個頭在下?c標準庫中是否有驗證函數?

編輯:斷言和驗證的是,確認將在發佈版本仍然執行的功能,而在斷言語句不釋放編譯之間的差異。

I.e.

assert(printf(「assert」));

verify(printf(「verify」));

在調試時將打印「斷言驗證」,但在發佈時將打印「驗證」。

+1

爲什麼不直接使用'assert'? –

+0

完全取決於您是否在發佈版本中啓用了斷言 - 這是由'NDEBUG'宏控制的。 –

+0

我明白了,答案是否定的,它只是一個微軟的東西。 – ashleysmithgpu

回答

4

定義的斷言宏在運行時,C在assert.hassert宏。

在編譯時,C(因爲C11)在assert.h中有static_assert宏。

有關信息,對於static_assert,某些C89/C99編譯器也將其作爲編譯器擴展包含在內。例如,IAR編譯器intrinsics.h中有static_assert函數。

+0

澄清我的問題,我不是在尋找assert – ashleysmithgpu

+0

@yuumei,而是'assert'像MS文檔中的'verify'一樣工作。只有當'NDEBUG'宏沒有被定義時,C'assert'纔會執行它的工作。 – ouah

0

您可以使用CUnit進行單元測試。它是用於Java的舊的JUnit庫的C端口。

後來編輯:它似乎有一個類似的宏,我不知道。

相關問題