C语言中#ifndef的头文件保护用法和宏定义用法

文章目录

  • 头文件保护
  • 宏定义

#ifndef MY_HEADER_H
#define MY_HEADER_H// 这里放置头文件的内容#endif // MY_HEADER_H
#ifndef _error#define _error		(-1)
#endif

这两个代码块分别用于不同的目的。

头文件保护

#ifndef MY_HEADER_H
#define MY_HEADER_H// 这里放置头文件的内容#endif // MY_HEADER_H

这是头文件保护的典型用法。这种结构用于防止头文件被多次包含。当第一次包含头文件时,MY_HEADER_H 未被定义,因此 #define MY_HEADER_H 会定义它,并且在 #endif 处结束。之后再次包含头文件时,由于 MY_HEADER_H 已经被定义,#ifndef MY_HEADER_H 之后的内容将被跳过,防止重复定义。

宏定义

#ifndef _error#define _error (-1)
#endif

这段代码是为一个错误码定义了一个宏。如果在之前的代码中没有定义 _error,则 #define _error (-1) 会定义 _error 宏,并赋值为 -1。如果在之前的代码中已经定义了 _error,则这个宏定义将被忽略。

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

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

相关文章

FLV 文件格式分析

前言 flv 是 flash video 的缩写,是 Adobe Flash payler 支持的一种流媒体播放格式。flv 是一种层级格式,除了一个 flv header 外,剩下全是由 一个个 tag 组成。tag 是由 tag 头和 tag 数据组成。tag 类型分为音频、视频、脚本,一…

WEB渗透—反序列化(七)

Web渗透—反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩哔_…

交换机的VRRP主备配置例子

拓朴如下: 主要配置如下: [S1] vlan batch 10 20 # interface Vlanif10ip address 10.1.1.1 255.255.255.0vrrp vrid 1 virtual-ip 10.1.1.254vrrp vrid 1 priority 200vrrp vrid 1 preempt-mode timer delay 20 # interface Vlanif20ip address 13.1.1…

2-Python与设计模式--工厂类相关模式

2-Python与设计模式–工厂类相关模式 一、快餐点餐系统 想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧。在一个大的触摸显示屏上, 有三类可以选择的上餐品:汉堡等主餐、小食、饮料。当我们选择好自己需要的食物,支付完成后&…

@RequestMapping,@GetMapping,@PostMapping 的区别(详解)

HTTP请求方法 HTTP请求方法一共有9种,为 GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT。 GET 【获取资源】本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等…

我们为什么要进行敏捷开发培训

敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调团队合作、客户需求和适应变化。进行敏捷开发培训其实有多种原因,我整理了一些,可以作为参考: 理解敏捷原则和实践: 敏捷开发不仅是一种方法论,更是一…

IDEA的安装与删除插件

不小心安装了一个英文转中文的插件,看不习惯,决定重新变回英文 先点击这个settings的安装 然后就看到这个下面这张图了 如果是安装就点install,不用了就和我一样把这个勾给去掉

MUI框架从新手入门【webapp开发教程】

文章目录 MUI -最接近原生APP体验的高性能前端框架APP开发3.25 开发记录miu框架介绍头部/搜索框:身体>轮播图轮播图设置数据自动跳转:九宫格图片九宫格图文列表底部选项卡按钮选择器手机模拟器 心得与总结:MUI框架在移动应用开发中的应用M…

openGauss学习笔记-133 openGauss 数据库运维-例行维护-日维护检查项

文章目录 openGauss学习笔记-133 openGauss 数据库运维-例行维护-日维护检查项133.1 检查openGauss状态133.2 检查锁信息133.3 统计事件数据133.4 对象检查133.5 SQL报告检查133.6 备份133.7 基本信息检查 openGauss学习笔记-133 openGauss 数据库运维-例行维护-日维护检查项 …

数据结构——利用堆进行对数组的排序

今天文章的内容是关于我们如何利用堆的特性对我们的数组进行排序,还有就是我们的TopK的问题,这次我们放在的是文件种,我们放入一亿个数字,然后我们取出一亿个数字中最大的十个数,利用上章堆的问题进行解决。 首先就是我…

计算机基础知识详细讲解

目录 一、计算机硬件 CPU(中央处理器):负责执行计算机指令和处理数据。 内存(RAM):用于临时存储程序和数据。 硬盘:用于永久性存储数据和文件。 显示器:用于显示图形界面和输出信…

【SQL Server2019SSMS】安装 | 卸载手册

目录 📋前言 ⛳️【SQL Serverssms】安装 1. SQL Server自定义安装 2. SSMS安装 ⛳️【SQL Server】卸载 📋前言 🌈个人主页:Sarapines Programmer 🔥 系列专栏:本期文章收录在《宝藏工具使用手册》&am…

git日历坐标系? 手动实现github活跃/贡献图

git日历坐标系? 手动实现github活跃/贡献图 前言 在使用github或gitlab时,我们总能发现,我们一年内的活跃度能够通过一张图直观地展现出来,那么你是否好奇它是如何实现的,最近工作中也遇到这样类似的需求,刚开始打算…

区块链介绍

区块链提供了比特币的公共账本,这是一个有序的、带有时间戳的交易记录。这个系统用于防止重复消费和修改之前的交易记录。 Introduction 比特币网络中的每个完全节点都独立存储只包含该节点验证的块的区块链。当多个节点在他们的区块链中都有相同的块时&#xff0…

uboot环境变量配置

uboot默认环境变量配置启动 进入uboot/include/configs目录下面 打开 xxxxconfig.h(自定义uboot头文件名),配置文件中有很多的定义,根据具体的情况定义 根据配置,编译uboot uboot的自定义配置 在uboot下面的board.c…

00TDI 这件红色大衣也太适合过年穿了

分享女儿的时尚穿搭—红色大衣 这款大衣非常厚实 摸起来很软糯的触感 复合了660-700g绵羊绒 厚实度堪比一件厚实的羽绒服 门禁处做了立体的爱心装饰 精致又可爱!!!

C++ String 字符串系列转换

// 宽字符转UTF8 ,处理字符乱码 std::string EncodeUtf8(std::wstring in) { std::string s(in.length() * 3 1, ); size_t len ::WideCharToMultiByte(CP_UTF8, 0, in.c_str(), in.length(), &s[0], s.length(), NULL, NULL); s.resize(len); return s; } /…

java--单继承、Object

java是单继承的,java中的类不支持多继承,但是支持多层继承。 反证法: 如果一个类同时继承两个类,然后两个类中都有同样的一个方法,哪当我创建这个类里的方法,是调用哪父类的方法 所以java中的类不支持多继…

Spring的@Feign源码分析

首先是开启Feign的注解EnableFeignClientsFeignClient EnableFeignClients会导入FeignClientsRegistrar类, FeignClientsRegistrar里面会解析EnableFeignClients注解,把里面配置的路径解析, 找到带有FeignClient注解的接口,注意是…

【Linux】:信号的产生

信号 一.前台进程和后台进程1.前台进程2。后台进程3.总结 二.自定义信号动作接口三.信号的产生1.键盘组合键2.kill信号进程pid3.系统调用1.kill函数2.raise函数3.abort函数 四.异常五.软件条件六.通过终端按键产生信号 一.前台进程和后台进程 1.前台进程 一个简单的代码演示 …