| #include <time.h> |
| #define T(t) (t*)0; |
| #define F(t,n) {t *y = &x.n;} |
| #define C(n) switch(n){case n:;} |
| static void f() |
| { |
| T(clock_t) |
| T(size_t) |
| T(time_t) |
| #ifdef _POSIX_C_SOURCE |
| T(clockid_t) |
| T(timer_t) |
| T(locale_t) |
| T(pid_t) |
| T(struct sigevent) |
| { |
| struct timespec x; |
| F(time_t,tv_sec) |
| F(long,tv_nsec) |
| } |
| { |
| struct itimerspec x; |
| F(struct timespec,it_interval) |
| F(struct timespec,it_value) |
| } |
| C(CLOCK_MONOTONIC) |
| C(CLOCK_PROCESS_CPUTIME_ID) |
| C(CLOCK_REALTIME) |
| C(CLOCK_THREAD_CPUTIME_ID) |
| #endif |
| { |
| struct tm x; |
| F(int,tm_sec) |
| F(int,tm_min) |
| F(int,tm_hour) |
| F(int,tm_mday) |
| F(int,tm_mon) |
| F(int,tm_year) |
| F(int,tm_wday) |
| F(int,tm_yday) |
| F(int,tm_isdst) |
| } |
| {void *x = NULL;} |
| {int x = CLOCKS_PER_SEC;} |
| C(TIMER_ABSTIME) |
| {char*(*p)(const struct tm*) = asctime;} |
| {clock_t(*p)(void) = clock;} |
| {char*(*p)(const time_t*) = ctime;} |
| {double(*p)(time_t,time_t) = difftime;} |
| {struct tm*(*p)(const time_t*) = gmtime;} |
| {struct tm*(*p)(const time_t*) = localtime;} |
| {time_t(*p)(struct tm*) = mktime;} |
| {size_t(*p)(char*restrict,size_t,const char*restrict,const struct tm*restrict) = strftime;} |
| {time_t(*p)(time_t*) = time;} |
| #ifdef _POSIX_C_SOURCE |
| {char*(*p)(const struct tm*restrict,char*restrict) = asctime_r;} |
| {int(*p)(pid_t,clockid_t*) = clock_getcpuclockid;} |
| {int(*p)(clockid_t,struct timespec*) = clock_getres;} |
| {int(*p)(clockid_t,struct timespec*) = clock_gettime;} |
| {int(*p)(clockid_t,int,const struct timespec*,struct timespec*) = clock_nanosleep;} |
| {int(*p)(clockid_t,const struct timespec*) = clock_settime;} |
| {char*(*p)(const time_t*,char*) = ctime_r;} |
| {struct tm*(*p)(const time_t*restrict,struct tm*restrict) = gmtime_r;} |
| {struct tm*(*p)(const time_t*restrict,struct tm*restrict) = localtime_r;} |
| {int(*p)(const struct timespec*,struct timespec*) = nanosleep;} |
| {size_t(*p)(char*restrict,size_t,const char*restrict,const struct tm*restrict,locale_t) = strftime_l;} |
| {int(*p)(clockid_t,struct sigevent*restrict,timer_t*restrict) = timer_create;} |
| {int(*p)(timer_t) = timer_delete;} |
| {int(*p)(timer_t) = timer_getoverrun;} |
| {int(*p)(timer_t,struct itimerspec*) = timer_gettime;} |
| {int(*p)(timer_t,int,const struct itimerspec*restrict,struct itimerspec*restrict) = timer_settime;} |
| {char **x = tzname;} |
| {void(*p)(void) = tzset;} |
| #endif |
| #ifdef _XOPEN_SOURCE |
| {struct tm*(*p)(const char*) = getdate;} |
| {int i = getdate_err;} |
| {char*(*p)(const char*restrict,const char*restrict,struct tm*restrict) = strptime;} |
| {long i = timezone;} |
| {int i = daylight;} |
| #endif |
| } |