2012-03-19 9 views
1

내가 http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01618.html에서 문서 libstdC++를보고했다가 같은 알고리즘, 문자열로 "모듈"에 배치 발견 등C++ 모듈이란 무엇이며 네임 스페이스와 어떻게 다른가요?

여러 개의 질문이이 이후

  1. doxygen의에서 자동으로 생성 된 문서이다 libstdC++ 소스 코드 또는 설정 파일의 일부로, doxygen이 다른 모듈과 그 내용/의존성을 "인식"하게합니까?

  2. 모듈이란 무엇이며 이름 공간과 어떻게 다른가요?

  3. 나는 C++ 모듈에 대한 Google 검색을 수행했으며 "modulename"으로 모듈을 정의했지만 libstdC++ 소스 코드에서 내보내기 정의를 찾을 수 없습니다. 위의 문서에서 "모듈"이라는 단어는 내보내기가 아닌 다른 구문을 의미합니까?

  4. 일반적으로 개발자는 대용량 프로젝트를 위해 소스 코드를 모듈로 나눕니까? 내가 모듈과 네임 스페이스

답변

2

같은 이름을 사용하는 두 개의 완전히 다른 것들이 나옵니다.

설명서에 나오는 "모듈"은 알고리즘의 사후 등급 분류 일 뿐인 것처럼 보입니다. 그것은 네임 스페이스에 긴밀하게 일치해야한다는 논쟁에 개방적 일지 모르지만 표준 라이브러리의 경우에는 본질적으로 모든 것이 하나의 거대한 네임 스페이스에 있습니다. 그것이 처음부터 네임 스페이스를 사용하여 디자인 되었다면 그런식이 아닐 수도 있지만 그것이 어떻게 된 것인지가 아닙니다. 어떤 경우이든 분류는 코드 자체가 아니라 문서에 적용됩니다. 비슷한 문서를 작성하는 다른 사람이 코드에 영향을주지 않고 다른 모듈로 나눌 것을 결정할 수도 있습니다.

C++ 11 표준화 작업 중에는 C++ 언어 자체에 다른 모듈 (이름 모듈도 포함)을 추가하라는 제안이있었습니다. 이 제안은 주로 표준을 빨리 마무리하기 위해 제거되었습니다. 후자는 네임 스페이스와 상당히 다르며 모듈 이름에 "내보내기"를 사용했습니다. 그것은 죽었고 사라졌습니다 (적어도 지금은). 그래서 여기에 대해서는 더 자세히 설명하지 않겠습니다. 호기심이 있다면 Daveed Vandervoorde's paper을 읽을 수 있습니다.

+0

감사합니다. @Jimm - 링크를 업데이트했습니다. –

+0

이 제안은 주로 "표준 조기 완료"를 위해 제거되었습니다. 또한 개념을 갖춘 프로토 타입 컴파일러는 애처로운 성능을 보였습니다. :) – NoSenseEtAl

+1

@NoSenseEtAl : 개념은 모듈과 완전히 별개입니다. ConceptGcc는 성능이 좋지 않았지만 빠른 해킹이었습니다. 일반적으로 개념을 추가하면 컴파일러 성능이 저하 될 것이라고 믿을만한 이유가 거의 없습니다. (Doug Gregor, ConceptGcc는 현재 CLang에서 작업하고 있으며 개념을 추측 할 수 있습니다. 더 나은 성능이 어느 시점에서 발생합니다). –

2

당신이 Doxygen을에 의해 생성 된 문서에보고 C의 일부가 아닌 모듈 ++로 내 소스 코드를 구성 할 수 있도록

  • 은 내가, 모듈에 대한 정보는 어디에서 배울 수 있습니다. libstdC++ 라이브러리의 특정 클래스는 \ ingroup Doxygen 명령을 사용하여 모듈로 그룹화됩니다.

    참조 : Doxygen에서 모듈/그룹을 만드는 방법에 대한 자세한 내용은 http://www.stack.nl/~dimitri/doxygen/grouping.html을 참조하십시오.

  • 관련 문제