assert()用法
生活随笔
收集整理的這篇文章主要介紹了
assert()用法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
assert宏的原型定義在<assert.h>中,其作用是如果它的條件返回錯(cuò)誤,則終止程序執(zhí)行,原型定義:[1]
#include <assert.h>void assert( int expression );
assert的作用是現(xiàn)計(jì)算表達(dá)式 expression ,如果其值為假(即為0),那么它先向stderr打印一條出錯(cuò)信息,然后通過調(diào)用 abort 來終止程序運(yùn)行。
//demo1.c #include <stdio.h> #include <assert.h> #include <stdlib.h>int demo1(int num) {assert(num>100);printf("demo2:%d\n",num);return 0; } //demo2.c #include <stdio.h> #include <assert.h> #include <stdlib.h>int demo2(int num) {assert(num>200);printf("demo2:%d\n",num);return 0; } //demo.c #include <stdio.h> #include <stdlib.h>int main( void ) {demo1(110);demo2(110);//不滿足 num>200的條件,報(bào)錯(cuò)如下return 0; } 測試現(xiàn)象: root@ubuntu:/work/demo# gcc *.c ;./a.out demo2:110 a.out: demo2.c:7: demo2: Assertion `num>200' failed. Aborted?
在調(diào)試結(jié)束后,可以通過在包含#include <assert.h>的語句之前插入 #define NDEBUG 來禁用assert調(diào)用,示例代碼如下:
#include <stdio.h>#define NDEBUG
#include <assert.h>
如:
//demo2.c#include <stdio.h> #define NDEBUG //僅對(duì)本文件起作用 #include <assert.h> #include <stdlib.h>int demo2(int num) {assert(num>200);//未編譯展開宏。printf("demo2:%d\n",num);return 0; } 現(xiàn)象: root@ubuntu:/work/demo# gcc *.c ;./a.out demo2:110 demo2:110
?
參考:
1.?assert()函數(shù)用法總結(jié)
http://www.cnblogs.com/ggzss/archive/2011/08/18/2145017.html
?
轉(zhuǎn)載于:https://www.cnblogs.com/mylinux/p/4151610.html
總結(jié)
以上是生活随笔為你收集整理的assert()用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (软件工程复习核心重点)第四章总体设计-
- 下一篇: Base64编码原理与应用