2011-06-15 3 views
1

C/C++ 런타임 및 표준 라이브러리는 어떤 언어인지 항상 궁금해합니다. 처음에는 캐주얼 C/C++ 언어라고 생각했지만 컴퓨터와의 대화를 통해 C/C++만으로는 충분하지 않습니다. 따라서 어셈블리 언어 일 수도 있습니다. C/C++ 또는 asm 언어 중 하나 인 경우 소스 코드가 실제로 돌아 다니는 것을 보지 않는 이유는 무엇입니까? 또는 어쩌면 나는 스킬 검색에 부족합니다 ...C 및 C++ 표준 라이브러리는 어떤 언어로 쓰여 있습니까? 그들의 소스 코드는 어디에 있습니까?

+0

이 C/C++ 사용은 유효하지 않습니다. 언어를 지정하십시오. – Puppy

+1

"또는 어쩌면 나는 스킬 검색에 부족하다 ..."확실히 그렇다. 거의 모든 표준 라이브러리 구현은 소스 코드에서 사용할 수 있습니다. 심지어 Microsoft의 CRT 소스 코드는 Express Edition (모든 Microsoft의 개발 툴킷에 사용되는 표준 C 및 C++ 라이브러리 구현을 모두 포함)을 제외하고 Visual Studio 패키지에 포함되어 있습니다. 예 : [GCC] (http://gcc.gnu.org)와 [Glibc] (http://www.gnu.org/s/libc) 조합은 대부분의 Linux 배포판에서 사용됩니다. –

답변

4

이들은 일반적으로 호스트 언어로 작성되어 운영 체제 API와 상호 운용되어 기본적으로 얻을 수없는 것을 얻습니다. 많은 기능이 순수한 언어로 작성되었습니다. 예를 들어, C++ 표준 라이브러리의 컨테이너 섹션 & 알고리즘 섹션은 C++로 작성되어야합니다. 사실, C++ 표준 라이브러리는 C++로 작성해야합니다. 왜냐하면 템플릿을 사용하기 때문입니다. 나는 왜 당신이 어떤 소스를 찾지 못했는지 모르겠다. 마이크로 소프트 CRT 소스는 어떤 개발자라도 사용할 수있다. 나는 CRT 소스를 게시하는 것에 관한 질문을 확실히 본 적이있다. GNU libC++는 오픈 소스 다. 꽤 확신 해요.

4

모든 런타임 및 표준 라이브러리는 C/C++로 작성되었습니다. 대부분의 공급 업체가 소스 코드를 제공합니다.

4

이들은 대개 일부 어셈블리가 섞여서 C로 작성됩니다. Visual Studio에는 CRT (C RunTime) 용 소스 코드가 많이 포함되어 있지 않은 경우 많은 양의 소스 코드가 함께 제공됩니다. Linux glibc는 분명히 오픈 소스입니다. http://ftp.gnu.org/gnu/glibc/

+4

C++ 표준 라이브러리는 대부분 템플릿 기반이므로 반드시 C++로 작성해야합니다. –

+1

사람들이 대답을 downvote, 이유에 대한 언급 신경? 어떻게 이것이 올바르지 않습니까? –

1

런타임의 대부분은 C 또는 C++로 작성되었지만 중요한 예외가 있으며 이는 커널에 호출되는 코드입니다. 가장 중요한 운영 체제는 특수 명령 (SWI 또는 SVC)을 사용하여 소프트웨어 인터럽트를 생성하여 수행합니다. C 또는 C++에는 이에 해당하는 것이 없으므로 어셈블러가 사용됩니다. 어셈블러는 일반적으로 매우 최적화 된 memcpy, memmove, memcmp 및 기타 유사한 기능을 구현하는 데 사용됩니다.

관련 문제