
Я компилирую код, который запрашивает соответствие POSIX 1003.1 1993 через -D_POSIX_C_SOURCE=2
.
Код включает заголовок <sys/time.h>
и пытается вызвать gettimeofday
, но в NetBSD 5.1 компилятор выдает предупреждение о том, что эта функция не объявлена.
Взглянув на заголовок NetBSD, мы видим, что объявление gettimeofday
заключено в проверку на то, _POSIX_C_SOURCE
что оно не меньше 200112
.
Действительно ли он gettimeofday
был представлен в POSIX только в 2001 году? Это вряд ли кажется правильным. В 1993 году уже был clock_gettime
с наносекундами и разными типами часов, и getttimeofday
это древний 4.2 BSD.
В библиотеке GNU C <sys/time.h>
, gettimeofday
вообще ничем не обернут.
Что правильно: заголовок NetBSD или мой код, полагающийся на _POSIX_C_SOURCE=2
раскрытие объявления gettimeofday
(и glibc, предоставляющий его безоговорочно)?
решение1
http://pubs.opengroup.org/onlinepubs/009604599/functions/gettimeofday.htmlдействительно говорится, что он был добавлен в 2001 году.