天天看點

#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