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

C语言(Tgmath.h库(C99),exit和atexit)

 一.Tgmath.h库(C99)

C99标准提供得tgmath.h头文件定义了泛型类型宏。比如在math.h中为一个函数定义了3中类型(float,double和long double)的版本,那么tgmath.h文件就创建一个泛型类型宏,与原来的float,double和long double版本的函数名同名

如果要调用sqrt()函数而不是sqrt()宏,可以用圆括号把被调用的函数名括起来

#include <tgmath.h>

Float x = 44.0;

Double y;

Y = sqrt(x);  //调用宏,又因为x是float,所以是sqrtf(x)

Y = (sqrt)(x);  //调用函数sqrt()

二.exit()和atexit()函数

Exit():刷新所有输出流,关闭所有打开的流和关闭由标准I/O函数的文件,最终退出主调函数

Exit()的参数关闭后参数传递给操作系统,如果正常结束传递0,异常结束传递非零。不同的退出值可用于区分程序失败的不同原因。但是并不是所有的操作系统都能识别相同范围内的返回值。因此,C标准规定了一个最小的限制范围。尤其是,标准要求0或EXIT_SUCCESS(0)用于表示成功结束程序,宏EXIT_FAILUER(1)用于表示结束程序失败。这些宏都和exit()函数原型都位于stdlib.h头文件中

Atexit():注册退出主调函数前要调用函数,最多注册32个函数

Int main(){

        …

        Atexit(sign_off)  //注册第一个退出函数

        …

        Atexit(too_bad) //注册第二个退出函数

        Exit(EXIT_FAILUER) //退出主调函数前先执行sign_off和too_bad

这里要知道,即使没有调用exit()函数,在程序结束时候还是会执行sign_off和too_bad


好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

http://www.lryc.cn/news/3561.html

相关文章:

  • LeetCode 刷题系列 -- 739. 每日温度
  • 如何生成毕业论文的目录和创建模板
  • 新来的23岁软件测试员上来秀了波操作,把几个老员工看傻了
  • Window10开放某个端口
  • 进阶7 分页查询
  • 利用升序定时器链表处理非活动连接
  • MySQL 开发规范
  • 【C语言进阶】预处理与程序环境
  • 【Docker知识】将环境变量传递到容器
  • Allegro如何更改铜皮显示密度操作指导
  • ThinkPHP5酒店预订管理系统
  • 【MySQL】MyCat分库分表分片规则配置详解与实战(MySQL专栏启动)
  • OpenWrt路由器设置域名动态解析手把手教程
  • java流浪动物救助系统(毕业设计)
  • 阿里代码规范插件中,Apache Beanutils为什么被禁止使用?
  • NFC enable NFC使能流程
  • Redis实例绑定CPU物理核优化Redis性能
  • STC15中断系统介绍
  • 力扣HOT100 11-15
  • 深入浅出单调栈与单调队列
  • 深入C语言——实现可变参数函数
  • 41-Dockerfile-Dockerfile简介
  • 【408】操作系统 - 刻骨铭心自测题1(上)
  • 【老卫拆书】009期:Vue+Node肩挑全栈!《Node.js+Express+MongoDB+Vue.js全栈开发实战》开箱
  • 【LeetCode】动态规划总结
  • CAS详解.
  • Mock.js初步使用(浏览器端)
  • opencv保存图片
  • 【c++】数据类型
  • Elasticsearch的写的底层原理