代碼(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。