#ifndef 、 #define 、#endif使用解释
在C语言程序代码里,看到了这么一段代码:
#ifndef __WIFI_CONNECT_H_
#define __WIFI_CONNECT_H_ int WifiConnect(const char *ssid,const char *psk); #endif /*__WIFI_CONNECT_H_ */
1、作用:防止该头文件被重复引用;
概念:“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的。
比如:存在a.h文件#include "c.h"而此时b.cpp文件导入了#include "a.h" 和#include "c.h"此时就会造成c.h重复引用。
2、造成后果:有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些;
3、使用格式:
#ifndef A_H意思是"if not define a.h" 如果不存在a.h
接着的语句应该#define A_H 就引入a.h
最后一句应该写#endif 否则不需要引入
#ifndef __WIFI_CONNECT_H_
#define __WIFI_CONNECT_H_ int WifiConnect(const char *ssid,const char *psk); #endif /*__WIFI_CONNECT_H_ */
二、枚举、结构体、寄存器宏定义 使用
#ifndef __E53_IA1_H__
#define __E53_IA1_H__ /***************************************************************
* 名 称: GasStatus_ENUM
* 说 明:枚举状态结构体
***************************************************************/
typedef enum
{
OFF = 0,
ON
} E53_IA1_Status_ENUM; /* E53_IA1传感器数据类型定义 ------------------------------------------------------------*/
typedef struct
{
float Lux; //光照强度
float Humidity; //湿度
float Temperature; //温度
} E53_IA1_Data_TypeDef; /* 寄存器宏定义 register--------------------------------------------------------------------*/
#define SHT30_Addr 0x44 //十进制
#define BH1750_Addr 0x23
#ifndef 、 #define 、#endif使用解释的更多相关文章
- C/C++头文件使用 #ifndef #define #endif 的原因
背景 在编译的时候,出现"redefine"的错误,最后检查才发现对应的头文件没有写正确的预编译信息: #ifndef _HeadFileName_H #define _HeadF ...
- 头文件里面的ifndef /define/endif的作用
c,c++里面,头文件里面的ifndef /define/endif的作用 今天和宿舍同学讨论一个小程序,发现有点地方不大懂······ 是关于头文件里面的一些地方: 例如:要编写头文件test.h ...
- 转 #ifndef/#define/#endif使用详解
想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件 ...
- C++头文件为什么要加#ifndef #define #endif
#ifndef 在头文件中的作用 在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时 ,就会出现大量“重定义”的错误.在头文件中实用#ifndef #de ...
- 头文件为什么要加#ifndef #define #endif
#ifndef 在头文件中的作用 在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时 ,就会出现大量“重定义”的错误.在头文件中实用#ifndef #de ...
- 头文件中的#ifndef/#define/#endif 的作用
在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量重定义的错误.在头文件中实用#ifndef #define #endif能避免头文件的重定 ...
- ifndef/define/endif作用和用法
问题:ifndef/define/endif”主要目的是防止头文件的重复包含和编译,偶只知道这个概念不懂的是怎么个用法,和为什么要用它~~高手请指点一下~~谢谢~~~!!! ------------- ...
- #ifndef#define#endif的用法
在网上看到了感觉作者总结得很好,作者辛苦了! #ifndef#define#endif的用法 文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都 ...
- #ifndef #define #endif 防止头文件被重复引用
想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件 ...
- [Windows编程] #pragma once 和#ifndef ... #define ... #endif 比较
C++中防止头文件被多次include 的常见方式有: 1) 用#ifndef ... #define ... #endif 宏 #ifndef __MYHEADER_H__#define __M ...
随机推荐
- Vue3 路由配置与导航全攻略:从零到精通
在现代前端开发中,单页应用(SPA)已经成为主流趋势.而作为 Vue.js 的核心功能之一,Vue Router 提供了强大的路由管理能力,帮助开发者轻松构建流畅.高效的单页应用.本文将带你深入探讨 ...
- AI回答:php中间件
在PHP中,中间件(Middleware)是一种用于在处理请求和生成响应之间插入额外逻辑的机制.中间件通常用于执行诸如身份验证.日志记录.缓存.错误处理等任务.PHP本身并没有内置的中间件系统,但许多 ...
- netcore后台服务慎用BackgroundService
在 .NET Core 开发中,BackgroundService 是一个非常方便的后台任务运行方式,但它并不适用于所有场景. BackgroundService 一时爽,并发火葬场. Backgro ...
- AI 智能体引爆开源社区「GitHub 热点速览」
最近很火的 Manus 智能体是一款将你的想法转化为行动的工具,能够处理生活中的各种任务.一经发布便迅速走红,并间接引爆了开源社区. 这也导致上榜的全是 AI 智能体开源项目,比如无需邀请码的开源版 ...
- composer 2 升级操作
update composer composer self-update // or sudo composer self-update 回滚到版本1 composer self-update --r ...
- [Qt 基础-03] QRadioButton
QRadioButton基础 本文主要根据QT官方帮助文档以及日常使用,简单的介绍一下QRadioButton的功能以及使用 文章目录 QRadioButton基础 简介 autoExclusive ...
- Flask快速入门4-蓝图
十六,Flask 用蓝图实现模块化的应用 1,Flask 为什么使用蓝图? Flask 中的蓝图为这些情况设计: 把一个应用分解为一个蓝图的集合.这对大型应用是理想的.一个项目可以实例化 一个应用对象 ...
- 使用Win32控制台实现命名管道通信
接收端: //server //命名管道采用基于连接的可靠传输方式,只能一对一传输 #include <windows.h> #include <iostream> #defi ...
- bp靶场业务逻辑漏洞
修改商品价格 目标是修改价格后低价买下这件夹克,再home这个页面的第一个商品就是 点击Add to cart,抓包,发现price的值可以该,改成000发现不行,0.00也不行,改成10后发现购物车 ...
- Windows Terminal 调整默认终端
Windows Terminal 打开时默认的是 PowerShell, 如下图: 但是, 我希望默认的是更轻快的 cmd... 打开设置 调整 defaultProfile 为 cmd.exe 配置 ...