在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