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

文章目录

c 复制代码
#ifndef MY_HEADER_H
#define MY_HEADER_H

// 这里放置头文件的内容

#endif // MY_HEADER_H
c 复制代码
#ifndef _error
	#define _error		(-1)
#endif

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

头文件保护

c 复制代码
#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 之后的内容将被跳过,防止重复定义。

宏定义

c 复制代码
#ifndef _error
    #define _error (-1)
#endif

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

相关推荐
MI_farmer1 小时前
Anaconda 安装在 D 盘但虚拟环境跑到 C 盘,以及 Conda PermissionError: WinError 5 的解决方法
c语言·开发语言·conda
心中有你02142 小时前
C语言 二叉搜索树(BST)超详细完整实现(插入+查找+删除+三种遍历+内存释放)
c语言
神仙别闹3 小时前
基于C语言实现 TINY+ 编译器
c语言·开发语言·数据库
共享家95274 小时前
C语言-408
c语言·开发语言
ACP广源盛139246256736 小时前
接口适配方案选型|GSV6125@ACP HDMI2.0 转 Type‑C/DP1.4 桥接芯片工程评估
大数据·c语言·开发语言·硬件架构·硬件工程·国产芯片
芯祥联9 小时前
STM32 上跑 MQTT 怎么选?嵌入式 MQTT 客户端 C 语言实现对比
c语言·stm32·单片机·嵌入式硬件·网络协议·开源·broker
Escalating_xu17 小时前
【C 语言】深入理解指针(1·下):指针运算、野指针、assert 与传址实战
java·c语言·开发语言
阿钱真强道18 小时前
20 嵌入式操作系统 | ubus:把自己的程序状态暴露出去
c语言·进程通信·ubus·ubusd·blobmsg
小小龙学IT20 小时前
三菱 PLC MC 协议(SLMP / QnA 兼容 3E 帧)深度解析:从帧结构到 C++/Go 双语言采集实战
c语言·c++·golang
Logic10121 小时前
C语言/数据结构位运算题解:异或XOR找出游戏速通中的“独特初始能量值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质