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의 두 번째 버전인 이 파일의 날짜는 1972-06-07이며 다음 소스(PDP-11 어셈블리)에서 위에 링크된 웹 사이트에 있습니다.
/ 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