当前位置: 首页 > article >正文

C语言 assert 函数 - C语言零基础入门教程

目录

  • 一.assert 函数简介
  • 二.assert 函数使用
  • 三.assert 函数用法总结与注意事项
  • 四.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.assert 函数简介

对于断言,相信大家都不陌生,大多数编程语言也都有断言这一特性。简单地讲,断言就是对某种假设条件进行检查。assert 宏原型定义:

//需要包含头文件 <assert.h>
#include <assert.h>

/*
 描述:如果它的条件返回错误,则终止程序执行

 参数:
    expression : 条件判断或者表达式
 */

void assert( int expression );

assert 将通过检查表达式 expression 的值来决定是否需要终止执行程序。也就是说,如果表达式 expression 的值为假(即为 0),那么它将首先向标准错误流 stderr 打印一条出错信息,然后再通过调用 abort 函数终止程序运行;否则,assert 无任何作用。

二.assert 函数使用

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 assert 函数
//@Time:2021/07/18 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/


#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
int main( void )
{
    FILE *fp;

    fp = fopen( "456.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件
    assert( fp );                           //所以这里不会出错
    fclose( fp );

    fp = fopen( "123.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败
    assert( fp );                           //所以这里出错
    fclose( fp );                           //程序永远都执行不到这里来
    return 0;
}

默认情况下,assert 宏只有在 Debug 版本(内部调试版本)中才能够起作用,而在 Release 版本(发行版本)中将被忽略。

三.assert 函数用法总结与注意事项

1.使用 assert 在函数开始处检验传入参数的合法性

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 assert 函数
//@Time:2021/07/18 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/


int resetBufferSize(int nNewSize)
{
  //功能:改变缓冲区大小,
  //参数:nNewSize 缓冲区新长度
  //返回值:缓冲区当前长度
  //说明:保持原信息内容不变     nNewSize<=0表示清除缓冲区
  assert(nNewSize >= 0);
  assert(nNewSize <= MAX_BUFFER_SIZE);
  ...
}

2.每个 assert 只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 assert 函数
//@Time:2021/07/18 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/


//错误写法
assert(a>=0 && b<=0 && c>0);

//正确写法
assert(a>=0);
assert(b<=0);
assert(c>0);

3. assert 缺点是频繁的调用会极大的影响程序的性能,增加额外的开销。

四.猜你喜欢

  1. C 语言 数组下标越界和内存溢出区别
  2. C 语言 使用指针遍历数组
  3. C 语言 指针和数组区别
  4. C 语言 指针数组和数组指针区别
  5. C 语言 野指针
  6. C 语言 函数值传递和址传递
  7. C 语言 函数不定长参数
  8. C 语言 函数指针
  9. C 语言 指针函数
  10. C 语言 回调函数 callback
  11. C 语言 #pragma once
  12. C 语言 #include <> 与 #include “” 区别
  13. C 语言 const 修饰函数参数
  14. C 语言 const 和 define 区别
  15. C 语言 #运算符
  16. C 语言 ##运算符
  17. C 语言 __VA_ARGS__
  18. C 语言 ##__VA_ARGS__
  19. C 语言 函数不定长参数 ##__VA_ARGS__经典案例
  20. C 语言 va_start 宏
  21. C 语言 va_end 宏
  22. C 语言 va_arg 宏
  23. C 语言 vprintf 函数
  24. C 语言 va_start / va_end / va_arg 自定义 printf 函数
  25. C 语言 main 函数
  26. C 语言 main 函数参数 main(int argc, char *argv[])
  27. C 语言 exit 函数
  28. C 语言 abort 函数
  29. C 语言 assert 函数

未经允许不得转载:猿说编程 » C 语言 assert 函数

本文由博客 - 猿说编程 猿说编程 发布!



喜欢的朋友记得点赞、收藏、关注哦!!!


http://www.kler.cn/news/336427.html

相关文章:

  • 专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
  • 数据结构-基于不同策略的英文单词的词频统计和检索系统
  • 付费计量系统数据元素(Data elements)
  • 【玩转 JS 函数式编程_004】1.4 如何应对 JavaScript 的不同版本
  • CSS——属性值计算
  • 济南奇牛科技移动办公手机安全管理平台功能说明
  • 【科普】Yarn Berry与npm分别是什么?两者之间有什么异同?
  • 亲测无限坐席在线客服系统源码/二开版/基于ThinkPHP+搭建教程
  • 每日一练算法题(判断表达式中括号是否匹配)
  • QT学习笔记4.6(编译,运行,调试)
  • 【D3.js in Action 3 精译_027】3.4 让 D3 数据适应屏幕(下)—— D3 分段比例尺的用法
  • 852. 山脉数组的峰顶索引
  • 计算机网络自顶向下(2)----socket编程
  • 分享国产32位单片机的电机控制方案
  • GEE 土地分类:利用Landsat C02 TOA数据进行土地分类精度超95%(希腊雅典为例)并监测不同年份的绿地面积
  • Android高级控件
  • (2025)408考研:王道操作系统文件管理强化
  • Sublime Text 下载地址分享
  • 看480p、720p、1080p、2k、4k、视频一般需要多大带宽呢?
  • 信息学奥赛使用的编程IDE:Dev-C++ 安装指南