Menurut Standar C11 (7.27.2.5), ada fungsi timespec_get
yang ditentukan dalam time.h
. Saya telah mencoba beberapa kompiler, termasuk clang dan beberapa versi gcc, yang seharusnya mendukung C11, tetapi fungsi ini selalu hilang. Makro TIME_UTC
juga hilang.
Ini file uji mytime.c
:
#include <time.h>
#include <stdio.h>
int main() {
printf("C version: %ld\n", __STDC_VERSION__);
fflush(stdout);
struct timespec ts;
timespec_get(&ts, TIME_UTC);
}
dan outputnya menggunakan Dentang:
$ cc --version
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$ cc -std=c11 mytime.c
mytime.c:9:3: warning: implicit declaration of function 'timespec_get' is invalid in C99
[-Wimplicit-function-declaration]
timespec_get(&ts, TIME_UTC);
^
mytime.c:9:21: error: use of undeclared identifier 'TIME_UTC'
timespec_get(&ts, TIME_UTC);
^
1 warning and 1 error generated.
Saya mengomentari baris timespec_get
hanya untuk memastikan saya menggunakan C11, dan memang benar.
Saya pada dasarnya mendapatkan hasil yang sama untuk gcc versi 4.8, 5, dan 6.
Saya menggunakan Mac, OS 10.11.6.
gettimeofday
untuk mendapatkan waktu sub-detik. (Mac juga tidak mendukung Posixclock_gettime
.) Ada juga beberapa Fungsi jam khusus Darwin. - person Steve Summit   schedule 26.08.2018