逍遥自在学C语言 | 常见的预定义宏

前言

在C语言中,预定义宏是由编译器提供的一组特殊标识符,可以在程序中直接使用,无需进行额外的定义。

预定义宏可以提供有关源文件、行号、日期、时间和函数名等信息,对于调试和日志记录非常有用。

一、人物简介

  • 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。

  • 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

二、功能介绍

以下是本教程中介绍的预定义宏:

  1. FILE:当前源文件的文件名。
  2. LINE:当前源文件中的行号。
  3. DATE:当前日期。
  4. TIME:当前时间。
  5. func:当前函数名。

三、使用场景

预定义宏在以下场景中非常有用:

  1. 调试信息:通过__FILE__和__LINE__宏,您可以在调试过程中打印当前源文件和行号,帮助定位代码问题。
  2. 日志记录:使用__DATE__和__TIME__宏,您可以在日志中记录当前日期和时间,方便追溯日志发生的时刻。
  3. 函数名标识:通过__func__宏,您可以在函数中输出当前函数的名字,有助于代码审查和日志记录。

四、示例代码

  • 下面是一个示例代码,演示了如何使用预定义宏:
#include <stdio.h>int main() {// __FILE__:当前源文件的文件名printf("当前源文件名:%s\n", __FILE__);// __LINE__:当前源文件中的行号printf("当前行号:%d\n", __LINE__);// __DATE__:当前日期printf("当前日期:%s\n", __DATE__);// __TIME__:当前时间printf("当前时间:%s\n", __TIME__);// __func__:当前函数名printf("当前函数名:%s\n", __func__);return 0;
}
  • 运行结果
当前源文件名:pre_macro.c
当前行号:8
当前日期:Jun 30 2023
当前时间:15:04:09
当前函数名:main

小结

通过这篇文章,我们学会了

1、常见的几个预定义宏的用法和使用场景

📢欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,非常感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/2188.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打造自己的分布式MinIO对象存储

MinIO是一个对象存储解决方案&#xff0c;它提供了一个与Amazon Web Services S3兼容的API&#xff0c;并支持所有核心S3特性。MinIO旨在部署在任何地方——公共云或私有云、裸机基础架构、协调环境和边缘基础架构。 分布式MinIO如何工作 Server Pool由多个Minio服务节点与其附…

【机器学习】十大算法之一 “PCA”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

nginxWebUI 远程命令执行漏洞

漏洞介绍 nginxWebUI是一款图形化管理nginx配置的工具&#xff0c;能通过网页快速配置nginx的各种功能&#xff0c;包括HTTP和TCP协议转发、反向代理、负载均衡、静态HTML服务器以及SSL证书的自动申请、续签和配置&#xff0c;配置完成后可以一键生成nginx.conf文件&#xff0c…

Linux--man指令

语法&#xff1a; man [选项] 命令 功能&#xff1a; 查询命令的详细信息&#xff0c;包括man命令本身 选项&#xff1a; -k 根据关键字搜索联机帮助num 只在第num章节找-a 将所有章节的都显示出来&#xff0c;比如 man printf 它缺省从第一章开始搜索&#xff0c;知道就停止…

数据结构期末复习【更新】

数据结构期末复习【更新】 1.模式匹配2.画二叉树&#xff08;根据中序和后序&#xff0c;前序和中序&#xff09;及其线索二叉树3.求叶子结点个数4.建立二叉排序树5.广义表6.求存储地址7.代码设计8.哈夫曼树9.最小生成树10.深度遍历、广度遍历、邻接表建立11.哈希表&#xff08…

开关电源-PFC驱动电路的工作原理

PFC驱动电路的工作原理 由于PFC的控制地和MOS管组成的双向开关的源极不共地&#xff0c;因此需要解决开关管浮地驱动问题。 图2 驱动电路图 电路图说明&#xff1a; PFCPWM是DSP的PWM信号&#xff1b;VCC_4V和AGND是DSP侧的电源和控制地&#xff1b;Vccp_14V和AGND_DRV是MO…

深度学习与机器学习区别

深度学习与机器学习区别 本文目录&#xff1a; 一、特征提取方面 1.1、机器学习 1.2、深度学习 1.3、机器学习特征提取 1.4、深度学习特征提取 1.5、深度学习特征提取例子 二、数据量和计算性能要求 三、算法代表 3.1、朴素贝叶斯算法 3.2、决策树 四、神经网络 一、…

FineReport学习2

当原始数据中存储的字段不适宜展现在报表上&#xff1b;或原始数据在数据查询时不易修改&#xff0c;但对显示在报表中的值有要求&#xff1b;或需要根据不同的原始数据在报表中显示不同的值时&#xff0c;就可以利用数据字典做巧妙的转化 设置数据字典 数据列的过滤&#xff…

软件工程——第5章总体设计知识点整理

本专栏是博主个人笔记&#xff0c;主要目的是利用碎片化的时间来记忆软工知识点&#xff0c;特此声明&#xff01; 文章目录 1.总体设计的基本目的&#xff1f; 2.总体设计的任务&#xff1f; 3.总体设计过程由哪两个阶段组成&#xff1f; 4.总体设计的步骤&#xff1f; 5…

Python基础语法笔记整理(黑马8天学会python笔记)

Python 第一章、基础语法 01.字面量(写在代码中的固定的值) 02.注释 # 单行注释 """ 多行注释 """03.变量 变量无类型&#xff0c;数据有类型 变量名 变量值04.数据类型 数据类型&#xff1a; type()05.类型转换 字符串转数字&#xff…

在 K8S 中部署一个应用 下

接着上一篇继续部署应用到 K8S中 之前简单部署的简单集群&#xff0c;三个工作节点是运行在 docker 和 kubelet 的&#xff0c;还有一个是控制节点 ReplicationController &#xff0c; pod 和 service 本次关系 之前有提到 ReplicationController &#xff0c; pod 和 服务…

使用 Debian、Docker 和 Nginx 部署 Web 应用

前言 本文将介绍基于 Debian 的系统上使用 Docker 和 Nginx 进行 Web 应用部署的过程。着重介绍了 Debian、Docker 和 Nginx 的安装和配置。 第 1 步&#xff1a;更新和升级 Debian 系统 通过 SSH 连接到服务器。更新软件包列表&#xff1a;sudo apt update升级已安装的软件…