#ifndef、#define、#endif

代碼(time.h中的源代碼)

 #ifndef _CLOCK_T_DEFINED 
  typedef long clock_t;
  #define _CLOCK_T_DEFINED 
  #endif 

代碼(time.h中的源代碼)

#ifndef _TM_DEFINED
    struct tm 
   { 
       int tm_sec;  /* 秒 – 取值區間爲[0,59] */
       int tm_min;  /* 分 - 取值區間爲[0,59] */
       int tm_hour; /* 時 - 取值區間爲[0,23] */
       int tm_mday; /* 一個月中的日期 - 取值區間爲[1,31] */
       int tm_mon;  /* 月份(從一月開始,0 代表一月) - 取值區間爲[0,11] */
       int tm_year; /* 年份,其值等於實際年份減去 1900 */
       int tm_wday; /* 星期 – 取值區間爲[0,6],其中 0 代表星期天,1 代表星期一,以此類 推 */
       int tm_yday; /* 從每年的 1 月 1 日開始的天數 – 取值區間爲[0,365],其中 0 代表 1 月 1 日,1 代表 1 月 2   
                     日,以此類推 */
       int tm_isdst;/* 夏令時標識符,實行夏令時的時候,tm_isdst 爲正。不實行夏令時的進 候,tm_isdst 爲 0;不了   


                       解情況時,tm_isdst()爲負。*/
   };
    #define _TM_DEFINED 
    #endif 

 說明:

          c語言中 struct 、typedef、define 都可以允許用戶定義自己的標籤。但是這裏的標籤是互斥的。不能同時存在的。

 如程序中的:

                        struct      標籤 :    tm 

                        typedef   標籤 :   clock_t

                        define     標籤 :    _TM_DEFINED

  爲了使用同一個規則來處理c用下劃線“_”開頭中間是使用的標記符名稱如TM(必須大寫)最後是“_DEFINED”

定義過了。

 所以使用

#ifndef tag

#define tag

#endif

語句塊來判斷  標籤tag是否被定義過。

如果定義過則

跳過#endfi執行後面的語句。

否則重定義tag。




  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章