찾아보기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.h
memcpy
malloc
표준이 발표되기 전에는 그렇지 않습니다.예전에는아니요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의 상표를 언급합니다.