ISO C/POSIX time()에 선택적 포인터 인수가 있는 이유

ISO C/POSIX time()에 선택적 포인터 인수가 있는 이유

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

관련 정보