
Ich kompiliere einen Code, der die Konformität mit POSIX 1003.1 1993 anfordert -D_POSIX_C_SOURCE=2
.
Der Code enthält den Header <sys/time.h>
und möchte aufrufen gettimeofday
, aber unter NetBSD 5.1 gibt es eine Compilerwarnung, dass diese Funktion nicht deklariert ist.
Wenn wir in den Header von NetBSD schauen, sehen wir, dass die Deklaration von gettimeofday
mit einem Test umschlossen ist, ob _POSIX_C_SOURCE
sie mindestens ist 200112
.
Wurde gettimeofday
POSIX wirklich erst 2001 eingeführt? Das scheint kaum richtig. 1993 gab es bereits clock_gettime
Nanosekunden und verschiedene Taktarten, und getttimeofday
es ist uraltes 4.2 BSD-Zeug.
<sys/time.h>
In der GNU C - Bibliothek gettimeofday
ist es durch überhaupt nichts umschlossen.
Was ist richtig: der NetBSD-Header oder mein Code, der sich darauf verlässt, _POSIX_C_SOURCE=2
die Deklaration offenzulegen gettimeofday
(und glibc, um sie bedingungslos bereitzustellen)?
Antwort1
http://pubs.opengroup.org/onlinepubs/009604599/functions/gettimeofday.htmlheißt es tatsächlich, dass es 2001 hinzugefügt wurde.