2016-10-16 2 views
-2
  • 대부분의 구성 요소는이 헤더 파일 만 제공되는 소스 코드 형태로 수출하고 있습니다.
  • C 라이브러리의 대부분의 기능은 libc.so에서 제공됩니다.

그래서, 내 질문은 :libstdC++가 필요한 이유는 무엇입니까? C++ 표준 라이브러리의

왜 우리가하면 libstdc 필요합니까 ++ 그래서.? ++ 된 libstdc에 어떤 내용

. 그래서?

+4

는 자신에 대한 참조 : https://github.com/gcc-mirror/gcc/tree/master/libstdc%2B%2B-v3/src – Brian

+1

첫 번째 문장은 완전히 잘못된 것입니다. 귀하의 질문은 거짓 전제 (premiss)에 근거합니다. 심지어 그것이 사실 일지라도 '소스 형식으로 내 보낸'것이 아닌 하나의 기호가 있다는 사실은 충분한 설명이므로 질문도 * 비 연속에 의존합니다. * – EJP

답변

3

라이브러리에는 많은 심볼이 정의되어 있습니다. 특히 언어 지원 및 표준 라이브러리 예외 클래스는 대부분 라이브러리에 정의되어 있습니다.

라이브러리 따라서, 템플릿이며 ++ 표준 C, 구성 요소의 많은 인라인 정의를하더라도, 그들은 명시 적으로 인스턴스화되는 혜택을한다. IOStreams 라이브러리를 명시 적으로 인스턴스화하면 (그리고 extern 템플릿으로 선언하면) 컴파일 시간이 크게 향상됩니다.

심볼 라이브러리 사용 nm에 정의되어있는 것을 파악하려면이 라이브러리에 의해 정의 및 참조 기호를 인쇄합니다. 결과는 적절한 c++filt에 파이프하여 수정 될 수 있습니다.

+0

아니요 때문에 외부 템플릿을 사용하지 않았습니까? 그게 무슨 뜻인지 알아낼 수 있을까요? –

+1

@ShacharShemesh : * exported * 템플릿은 * 제공되지 않았으며 대부분 구현자가 구현하려고하지 않았기 때문에 주로 제공되었지만 주로 * 삭제되었습니다. 'extern' 템플릿에 대해 문제가 있거나 이해하기 어려운 것이 없습니다. extern 템플릿은 선언 된 인스턴스화에 대해 암시 적 인스턴스화를 수행하지 않아도된다는 것을 단순히 선언합니다. 대신, 적절한 명시 적 인스턴스화가 제공됩니다. –

관련 문제