UNIX v7에는 stdlib가 없습니까?

UNIX v7에는 stdlib가 없습니까?

찾아보기v7 UNIX 소스 코드v7 UNIX 에뮬레이터를 사용하면 "stdlib" 디렉토리가 없다는 것을 알았습니다 <stdlib.h>. 그러나 v7 UNIX에는 exit()및 같은 기능이 malloc(), realloc(), free() .etc.있습니다. 또한 Google에서 검색한 후 몇 시간 내에 SE로 전환했기 때문에 c89 (ANSI)하나가 있어야 합니다 . :)<stdlib.h>K&R ANSI Edition.

그래서 내 질문은 다음과 같습니다<stdlib.h>C에서 처음으로 공식적으로 사용된 때는 언제입니까? 그 역사는 무엇입니까(즉, BSD에서 사용되었다가 BSD에 포함되었습니까 c89?)

감사해요.

답변1

c89 표준은 살펴볼 만한 것입니다.이유별도로 게시되었습니다(표준의 일부가 아님). stdlib.h표준을 작성하는 위원회에서 작성되었으며 기존 관행을 반영하지 않습니다. 이것X3J11 원리설명하다:

마스트헤드는 <stdlib.h>다양한 노숙자 행사를 주최하기 위해 의회에서 발명되었습니다.

오래된 프로그램에는 포함에 대한 ifdef가 있지만 for 등과 stdlib.h같은 다른 곳에서는 그렇지 않습니다.memory.hmemcpymalloc

표준이 발표되기 전에는 그렇지 않습니다.예전에는아니요stdlib.h 예를 들어 내 메모 중 하나에 메모가 있습니다.헤드 파일공지 VMS 5.3(출시)1989년 6월) 가지다 stdlib.h:

#if defined(vms)        /* VAX/VMS 5.3 */
#define HAVE_STDLIB_H 1
#define HAVE_STDARG_H 1
#undef  HAVE_UNISTD_H
#define HAVE_OLD_TOKEN_SPLICE 1
#define HAVE_OLD_TOKEN_QUOTE  1
#endif

오히려 표준 개발에 참여한 회사는 표준이 진행됨에 따라 이러한 기능을 통합하므로 표준이 개발될 때예전에는출판되면 기존 관행을 반영합니다.

stdlib.h동일한 헤더(및 그 기록)에서 SVr3은 존재하지 않았지만 (Apollo의 svr5.5환경 참조) "나중에"(아마도 c89 표준과 같은 시기에 개발된 SVr4와 함께) 나온 것을 볼 수 있습니다 .

BSD 포인트에 관해서는 1990년 4.3reno에 나타나는 것을 볼 수 있었습니다(관련되기에는 너무 늦었습니다). 다시 말하지만, 다음과 같은 설명을 찾는 것은 쉽습니다. SunOS 4는 ANSI 이전 버전이었습니다(비록 다음과 같이 ANSI 컴파일러를 추가한 것을 기억합니다).옵션프로세스가 다소 늦었습니다). 따라서 이 헤더에 대한 BSD의 영향력을 무시하고 표준 개발에 참여하는 회사로 유지합시다.

그 가치에 대해 이론적 근거에서는 AT&T 및 Digital Equipment Corporation의 상표를 언급합니다.

관련 정보