C語言標準庫概覽詳述[1]-斷言

1.1 assert

void assert( int expression );

assert宏用於爲程序增加診斷功能。當assert(exp)執行時,如果exp爲0,
則在標準出錯輸出流stderr輸出一條如下所示的信息:

Assertion failed: expression, file filename, line nnn

然後調用abort終止執行。其中的源文件名filename和行號nnn來自於預處理宏__FILE__和__LINE__。

如果<assert.h>被包含時定義了宏NDEBUG,那麼宏assert被忽略。


示例:

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>

int main( void )
{
       FILE *fp;
    
       fp = fopen( "test.txt", "w" );
       assert( fp );  /*這裏不會出錯*/
       fclose( fp );
    
       fp = fopen( "noexitfile.txt", "r" );
       assert( fp ); /*這裏出錯*/
       fclose( fp ); /*不會執行到這裏*/

       return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章