ISO C/POSIX発表する次の機能time()
:
time_t time(time_t *tloc);
文書には次のように記載されています。
time() 関数は、epoch 以降の時間値を秒単位で返す必要があります。
tlocパラメーターは戻り値も格納される領域を指します。 tloc がヌルポインタの場合、値は保存されません。
なぜ人々が最初に戻り値と「出力」パラメータの両方を持つようにAPIを設計するのか理解していません。そのようなデザインの妥当な理由はありますか、それとも歴史的に発展してきましたか?
time()
従来はoutパラメータ()のみを持っていましたが、以前のバージョンとの互換性のために値を返し、最初のパラメータを保持するように変更したvoid time(time_t *)
関数はありましたか?time_t
それとも戻り値のサイズがfitに制限され、time_t
ポインタを必要とするシステムはありますか?
答え1
long
したがって、MC68020がコメントで述べたように、Cには当時の型はなく、私が見つけることができる最も古い型はライブラリ/time.sUnixの2番目のバージョンであるこのファイルの日付は1972-06-07で、次のソース(PDP-11アセンブリ)から上にリンクされているWebサイトにあります。
/ C library -- time
/ tvec = time(tvec);
/
/ tvec[0], tvec[1] contain the time
.globl _time
.data
_time:
1f
.text
1:
mov 2(sp),r0
sys time
mov ac,(r0)
mov mq,2(r0)
rts pc
興味深いことに、16ビット値の一種の2要素配列を想定すると、常に戻り値(tvec = time(tvec);
)があるようです(対応する割り当てが関連している場合)。tvec