
を介して POSIX 1003.1 1993 準拠を要求するコードをコンパイルしています-D_POSIX_C_SOURCE=2
。
コードにはヘッダーが含まれており<sys/time.h>
、 を呼び出す必要がありますgettimeofday
が、NetBSD 5.1 ではその関数が宣言されていないというコンパイラー警告が表示されます。
NetBSD のヘッダーを調べてみると、 の宣言が少なくとも であるgettimeofday
ことのテストで囲まれていることがわかります。_POSIX_C_SOURCE
200112
本当に POSIX に導入されたのは 2001 年になってからでしょうかgettimeofday
? それは正しくないように思えます。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年に追加されたと書かれています。