C++ assert() 詳解

C++ assert 宏的應用方式將會在這篇文章中進行詳解

相信對此有興趣的朋友們應該可以根據我們介紹的內容充分掌握這方面的應用技巧。?
作為一個經驗豐富的編程人員來說,對于C++編程語言應該不會陌生的,實現它的應用可以幫助我們輕松的各種功能需求。

在這里我們會對C++ assert 宏的一些基本應用做一個詳細介紹。

assert宏的原型定義在< assert.h>中,其作用是如果它的條件返回錯誤,則終止程序執行,

原型定義:

#include < assert.h>?? void assert( int expression );

?C++ assert()宏的作用是現計算表達式 expression ,如果其值為假(即為0),

那么它先向stderr打印一條出錯信息,

然后通過調用 abort 來終止程序運行。

請看下面的程序清單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;??

?}??

使用C++ assert()宏的缺點是,頻繁的調用會極大的影響程序的性能,增加額外的開銷。

在調試結束后,可以通過在包含#include < assert.h>的語句之前插入 #define NDEBUG 來禁用assert調用,

示例代碼如下:

#include < stdio.h>?

?#define NDEBUG

#include < assert.h>

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

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

相關文章

直連測速服務器異常,求證! 網件R7800, Speedtest測速的怪現象,200M寬帶+R7800者進...

本帖最后由 毛毛雨 于 2017-11-18 18:50 編輯寬帶是聯通FTTH 200M&#xff0c;標準千兆網線&#xff0c;千兆網卡。問題前的插曲&#xff1a;R7800剛到手&#xff0c;就迫不及待的換上了&#xff0c;結果&#xff0c;無論是路由器內置Speedtest冊數&#xff0c;還是電腦端的Spe…

iOS socket

為什么80%的碼農都做不了架構師&#xff1f;>>> #import "ViewController.h"interface ViewController ()<NSStreamDelegate,UITextFieldDelegate,UITableViewDataSource,UITableViewDelegate>{NSInputStream *_inputStream;//對應輸入流NSOutputS…

PHP配置,php.ini以及覆蓋問題

在部署一個cms項目到服務器上的時候&#xff0c;因為cms的模板比較老&#xff0c;服務器上用的php是5.3.3版&#xff08;大于5.3&#xff0c;可以認為是新的&#xff09;&#xff0c;有些頁面會顯示“deprecated”類別的錯誤信息。安全起見要抑制頁面中的錯誤信息輸出&#xff…

C/C++宏的使用總結

宏替換是C/C系列語言的技術特色&#xff0c;C/C語言提供了強大的宏替換功能&#xff0c;源代碼在進入編譯器之前&#xff0c;要先經過一個稱為“預處理器”的模塊&#xff0c;這個模塊將宏根據編譯參數和實際編碼進行展開&#xff0c;展開后的代碼才正式進入編譯器&#xff0c;…

Macosx 安裝 ionic 成功教程

2019獨角獸企業重金招聘Python工程師標準>>> 一、首先介紹一下ionic ionic是一個用來開發混合手機應用的&#xff0c;開源的&#xff0c;免費的代碼庫。可以優化html、css和js的性能&#xff0c;構建高效的應用程序&#xff0c;而且還可以用于構建Sass和AngularJS的…

hp g6服務器安裝系統,HPProLiantDL180G6服務器安裝圖.PDF

HPProLiantDL180G6服務器安裝圖4 前面板組件 / 25 個 2.5 英寸硬盤型號HP ProLiant DL180 G6 識別服務器組件2 光驅服務器 前面板組件 3 前部 UID LED 指示燈/開關4 系統運行狀況 LED 指示燈1 前面板組件/4 個 3.5 英寸硬盤型號 5 網卡 1 活動 LED 指示燈安裝圖 6 網卡 2 活動 …

九度OJ 1076:N的階乘 (數字特性、大數運算)

時間限制&#xff1a;3 秒 內存限制&#xff1a;128 兆 特殊判題&#xff1a;否 提交&#xff1a;6384 解決&#xff1a;2238 題目描述&#xff1a;輸入一個正整數N&#xff0c;輸出N的階乘。 輸入&#xff1a;正整數N(0<N<1000) 輸出&#xff1a;輸入可能包括多組數據&a…

Visual C++中 #include stdafx.h 頭文件的用法

今天在做VC實驗時&#xff0c;總是出現莫名其妙的錯誤。比如說&#xff1a; unexpected end of file whilelooking for precompiled header directive 再比如說這么一大串&#xff1a; mainframe.cpp 有錯誤\firstdlg.h(21) :error C2065: IDD_DIALOG_FIRST : undeclared ide…

mac顯示無法連接adobe服務器,Mac安裝Adobe軟件,如遇Error提示解決方法

Mac10.15.3 安裝Adobe Photoshop 2020的時候一直提示Error錯誤The installation cannot continue as the installer file may be damaged. Download the installer file again.看到這種問題&#xff0c;一般第一想法就是安裝包損壞了&#xff0c;本能的會再下載一遍甚至多遍&am…

android開發中EditText自動獲取焦點時隱藏hint的代碼

只需讓EditText設置以下的OnFocusChangeListener就可以了 private OnFocusChangeListener mOnFocusChangeListener new OnFocusChangeListener() {Overridepublic void onFocusChange(View v, boolean hasFocus){EditText textView (EditText)v;String hint;if (hasFocus) {h…

Grovvy初識

1.Groovy和Java對比 Groovy的松散的語法允許省略分號和修飾符除非另行指定&#xff0c;Grovvy的所有內容都為publicGrovvy允許定義簡單腳本&#xff0c;同時無需定義正規的class對象Grovvy在普通的常用java對象上增加了一些獨特的方法和快捷方式&#xff0c;使得他們更容易使用…

C和C++混合編程(__cplusplus使用)

第一種理解 比如說你用C開發了一個DLL庫&#xff0c;為了能夠讓C語言也能夠調用你的DLL輸出(Export)的函數&#xff0c;你需要用extern "C"來強制編譯器不要修改你的 函數名。 通常&#xff0c;在C語言的頭文件中經常可以看到類似下面這種形式的代碼&#xff1a; …

$.ajax 同步一不,ajax 同步不生效

可以用的生效代碼注意 boolean 的位置var baseUrl ${pageContext.request.contextPath };function formcheck(){var flag false;var customerNameaa;var countryaa;var citybeijing;$.ajax({type: POST,url:baseUrl "/exports/credit/findBuyersBySerach",data:{&…

iOS工程中創建pch文件

1.新建pch類文件 2.在工程配置中,Build Setting 下搜索"pre"尋找Apple LLVM6.1 - Language下的 Preflx Header 3.點開Preflx Header 把左邊pch類拖拽進去 4.把/"工程名"/....前邊的內容全部換為$(SRCROOT) (具體替換內容看報錯自己靈活運用)轉載于:https:/…

批處理中setlocal enabledelayedexpansion的作用詳細整理

設置本地為延遲擴展。其實也就是&#xff1a;延遲變量&#xff0c;全稱延遲環境變量擴展, 想進階&#xff0c;變量延遲是必過的一關&#xff01;所以這一部分希望你能認真看。 為了更好的說明問題&#xff0c;我們先引入一個例子。 例1: echo off set a4 set a5&echo…

一個服務器多個網站多個域名,多個域名一個服務器嗎

多個域名一個服務器嗎 內容精選換一換PAS(Primary Application Server)&#xff1a;主應用服務器。AAS(Additional Application Server)&#xff1a;擴展應用服務器。ASCS(ABAP Central Services)&#xff1a;SAP應用核心服務&#xff0c;是SAP應用的一個核心控件&#xff0c;包…

iframe 子父窗口互掉 js

一、父窗口調用iframe子窗口方法 1、HTML語法&#xff1a;<iframe name"myFrame" src"child.html"></iframe> 2、父窗口調用子窗口&#xff1a;myFrame.window.functionName(); 3、子窗品調用父窗口&#xff1a;parent.functionName(); 簡單地…

yii2 ajax分頁,Yii框架分頁技術實例分析

本文實例講述了Yii框架分頁技術。分享給大家供大家參考&#xff0c;具體如下&#xff1a;直接上代碼&#xff1a;1.首先寫控制器層先引用pagination類use yii\data\Pagination;寫自己的方法:function actionFenye(){$data Field::find(); //Field為model層,在控制器剛開始use了…

Spring源碼解析——如何閱讀源碼

閱讀目錄 下面看一下如何使用jar包以及源碼的source包  下面給出一個簡單的spring樣例  如何閱讀源碼最近沒什么實質性的工作&#xff0c;正好有點時間&#xff0c;就想學學別人的代碼。也看過一點源碼&#xff0c;算是有了點閱讀的經驗&#xff0c;于是下定決心看下spring…

c++多線程編程

一直對多線程編程這一塊很陌生&#xff0c;決定花一點時間整理一下。 os:ubuntu 10.04 c 1.最基礎&#xff0c;進程同時創建5個線程&#xff0c;各自調用同一個函數 [html] view plaincopy #include <iostream> #include <pthread.h> //多線程相關操作頭文件&am…