淺析C語言中assert的用法(轉)

原文地址:http://www.jb51.net/article/39685.htm

?

以下是對C語言中assert的使用方法進行了介紹,需要的朋友可以參考下。

assert宏的原型定義在<assert.h>中,其作用是如果它的條件返回錯誤,則終止程序執行,原型定義:
#include <assert.h>
void assert( int expression );
assert的作用是先計算表達式expression,如果其值為假(即為0),那么它先向標準錯誤流stderr打印一條出錯信息,然后通過調用abort來終止程序運行;否則,assert()無任何作用。宏assert()一般用于確認程序的正常操作,其中表達式構造無錯時才為真值。完成調試后,不必從源代碼中刪除assert()語句,因為宏NDEBUG有定義時,宏assert()的定義為空。
請看下面的程序清單badptr.c:

#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;
}

宏名: assert
功 能: 測試一個條件并可能使程序終止
用 法: void assert(int test);
程序例:

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
struct ITEM {int key;int value;
};/* add item to list, make sure list is not null */
void additem(struct ITEM *itemptr) {assert(itemptr != NULL);/* add item to list */
}int main(void)
{additem(NULL);return 0;
}

?

轉載于:https://www.cnblogs.com/space-place/p/7571554.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371166.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371166.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371166.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

hihocoder offer收割編程練習賽12 D 尋找最大值

思路&#xff1a; 可能數據太水了&#xff0c;隨便亂搞就過了。 實現&#xff1a; 1 #include <iostream>2 #include <cstdio>3 #include <algorithm>4 using namespace std;5 typedef long long ll;6 7 int a[100005], n;8 9 int main() 10 { 11 int t;…

vue error:The template root requires exactly one element.

error:[vue/valid-template-root] The template root requires exactly one element. 原因&#xff1a; 因為vue的模版中只有能一個根節點&#xff0c;所以在<template>中插入第二個元素就會報錯 解決方案&#xff1a; 將<template>中的元素先用一個<div>…

測試驅動陷阱,第2部分

單元測試中單元的故事 在本文的上半部分 &#xff0c;您可能會看到一些不好但很流行的測試示例。 但是我不是一個專業評論家&#xff08;也被稱為“巨魔”或“仇恨者”&#xff09;&#xff0c;沒有任何建設性的話就抱怨。 多年的TDD教給我的不僅僅是事情會變得多么糟糕。 有許…

java 代碼 設置環境變量_Java 配置環境變量教程

【聲明】歡迎轉載&#xff0c;但請保留文章原始出處→_→【正文】1、安裝JDK開發環境開始安裝JDK&#xff1a;修改安裝目錄如下&#xff1a;確定之后&#xff0c;單擊“下一步”。注&#xff1a;當提示安裝JRE時&#xff0c;可以選擇不要安裝。2、配置環境變量&#xff1a;對于…

組合數據類型練習,英文詞頻統計實例上(2017.9.22)

字典實例&#xff1a;建立學生學號成績字典&#xff0c;做增刪改查遍歷操作。 sno[33號,34號,35號,36號] grade[100,90,80,120] d{33號:100,34號:90,35號:80,36號:120} print(d) print(每個學號對應分數:,d.items()) print(彈出35號的分數:,d.pop(35號)) print(獲取學號:,d.key…

java 代碼中設置 臨時 環境變量

System.setProperty("hadoop.home.dir", "D:\\software\\software_install\\dev_install\\hadoop-2.4.1"); 轉載于:https://www.cnblogs.com/zychengzhiit1/p/6662376.html

什么是快速開發框架

什么是快速開發框架 前言 做為一個程序員&#xff0c;在開發的過程中會發現&#xff0c;有框架同無框架&#xff0c;做起事來是完全不同的概念&#xff0c;關系到開發的效率、程序的健壯、性能、團隊協作、后續功能維護、擴展......等方方面面的事情。很多朋友在學習搭建自己…

java中的math.abs_Java.math.BigDecimal.abs()方法

全屏Java.math.BigDecimal.abs()方法java.math.BigDecimal.abs()返回一個BigDecimal&#xff0c;其值是此BigDecimal的絕對值&#xff0c;其標度是this.scale()。聲明以下是java.math.BigDecimal.abs()方法的聲明public BigDecimal abs()參數NA返回值此方法返回的名為value&…

我需要多少內存

什么是保留堆&#xff1f; 我需要多少內存&#xff1f; 在構建解決方案&#xff0c;創建數據結構或選擇算法時&#xff0c;您可能會問自己&#xff08;或其他人&#xff09;這個問題。 如果此圖包含1,000,000條邊并且我使用HashMap進行存儲&#xff0c;此圖是否適合我的3G堆&am…

C語言程序設計預報作業

1閱讀鄒欣老師的博客--師生關系,針對文中的幾種師生關系談談你的看法&#xff0c;你期望的師生關系是什么樣的&#xff1f; 答&#xff1a;我認為文中的師生關系都存在一些缺陷&#xff0c;第一種師生關系是建立在病態關系上的&#xff0c;學生不是植物自然有自己的思想。所以我…

淺談23種設計模式

淺談23種設計模式 類之間的關聯關系&#xff1a;在使用Java、C#和C等編程語言實現關聯關系時&#xff0c;通常將一個類作為另一個類的屬性。   (1)雙向關聯&#xff0c;兩個類互相為各自的屬性&#xff0c;比如顧客類Customer和商品類Product&#xff0c;顧客擁有商品&#x…

網頁布局基礎

1、盒子模型的第一層到第五層&#xff1a; border、padding content、background-image、background-color、margin 2、清除浮動。對受到浮動影響的標簽作以下操作&#xff1a; 1、clear: both; 2、clear: right; clear: left; 3、設置寬度width: 100%(或者固定寬度) overflow…

mysql與串口通信_虛擬機串口與主機串口通信·小程序(下)

上次說到的&#xff0c;不能做到實時通信。那么開兩個進程就可以了&#xff0c;一個用來監聽是否有消息傳來&#xff0c;一個用來等待用戶輸入。那么&#xff0c;先來復習一下進程的相關概念。進程結構linux中進程包含PCB(進程控制塊)、程序以及程序所操縱的數據結構集&#xf…

淺談我所見的CSS命名風格

在兩年工作中&#xff0c;總結一下我所見的css命名風格。 1.單一class命名 .header {width: 500px; } .item {text-indent: 20%; } 優點&#xff1a;簡單&#xff0c;渲染效率高。 缺點&#xff1a;零散&#xff0c;沒有模塊化。 2. 后代選擇器class命名 .header .item a {font…

Java規范請求中的數字

你們都了解Java社區流程 &#xff08;JCP&#xff09;&#xff0c;不是嗎&#xff1f; JCP是為Java技術開發標準技術規范的機制。 任何人都可以注冊該站點并參與對Java規范請求&#xff08;JSR&#xff09;的審查和提供反饋&#xff0c;并且任何人都可以注冊成為JCP成員&#x…

ORACLE MOS 翻譯

http://blog.csdn.net/msdnchina/article/details/53174196轉載于:https://www.cnblogs.com/zengkefu/p/6665950.html

自從我這樣擼代碼以后,公司網頁的瀏覽量提高了107%!

歡迎大家前往騰訊云 社區&#xff0c;獲取更多騰訊海量技術實踐干貨哦~ 本文由騰訊IVWEB團隊發表于云 社區專欄 作者&#xff1a;yangchunwen HTTP協議是前端性能乃至安全中一個非常重要的話題&#xff0c;最近在看《web性能權威指南(High Performance Browser Networking)》&a…

python數列分段_按范圍分段的Python數組

首先&#xff0c;定義你的“極”數第二&#xff0c;根據這些“極”數生成間隔第三&#xff0c;定義盡可能多的列表。在然后&#xff0c;對于每個間隔&#xff0c;掃描列表并在相關列表中添加屬于該間隔的項代碼&#xff1a;source [1, 4, 7, 9, 2, 10, 5, 8]poles (0,3,6,25)…

51nod 1278 相離的圓

基準時間限制&#xff1a;1 秒 空間限制&#xff1a;131072 KB 分值: 10 難度&#xff1a;2級算法題 平面上有N個圓&#xff0c;他們的圓心都在X軸上&#xff0c;給出所有圓的圓心和半徑&#xff0c;求有多少對圓是相離的。例如&#xff1a;4個圓分別位于1, 2, 3, 4的位置&…

讓我們將包變成模塊系統!

使用構建系統將許多項目分為模塊/子項目&#xff08; Maven &#xff0c; Gradle &#xff0c; SBT …&#xff09;&#xff1b; 編寫模塊化代碼通常是一件好事。 將代碼分為構建模塊主要用于&#xff1a; 隔離代碼部分&#xff08;減少耦合&#xff09; api / impl拆分 僅將…