C++은 계속 발전하는 언어이며 수년 동안 새로운 기능이 추가되고 있습니다.C++에 대한 모듈 개념
C++에서 잘못 놓친 한 가지 특징은 적절한 모듈 개념입니다. 헤더 파일을 사용하는 현재 접근법 (헤더가 두 번 포함되지 않았 음을 확인하기 위해 조건문 #define을 사용하는 경우)은 확실히 불만족스러워 보입니다.
예를 들어, 우리 프로젝트에 많은 소스 파일에 "#include"가 너무 많아서 컴파일 시간이 불필요하게 길어지는 문제가 있습니다. Incredibuild를 사용하여 제품을 빌드하는 데 45 분이 걸립니다. 즉 적어도 10 개의 코어를 병렬로 사용합니다. 따라서 수동으로 파일을 정리하는 데 많은 시간을 소비해야합니다. 즉, 파일을 실제로 제거했는지 확인하기 위해 제거하는 것입니다.
가 나는
- 것이 가능에 명확 모듈의 구현과 인터페이스를 분리하게하는 모듈 개념이 매우 유용 할 것이라고 생각;
- 모듈의 인터페이스와 본문을 따로 따로 컴파일합니다 (현재 .h 파일은 다른 파일에 포함될 때마다 반복해서 컴파일됩니다). 도구는 컴파일 된 인터페이스를 읽고 어떤 유형, 기능, 클래스인지 알려줍니다 수출;
- 가져 오기를 자동으로 다시 정렬하기위한 쓰기 도구 (예 : Java/Eclipse를 사용하면 파일의 모든 가져 오기를 자동으로 다시 정렬 할 수 있음).
이러한 모듈 개념을 정의하고이를 C++에 통합하거나 너무 복잡하다고 생각할 수 있습니까? 이 방향으로 어떤 노력을했는지 알고 있습니까? 미리 컴파일 된 헤더에 관한 제안을
편집
감사합니다. 가능한 경우 시도해 보겠습니다 (Visual Studio 2008 사용). 아마도 우리는 잘못된 방식으로 헤더 파일을 사용하고있을 것입니다 (?) 우리는 각 클래스마다 하나의 헤더 파일을 사용합니다. 그런 다음 클래스 구현과 함께 cpp 파일을 만듭니다. 종종 우리는 30, 40 헤더 파일을 포함하는 cpp 파일로 끝납니다. cpp 파일을 변경하면 더 이상 필요하지 않은 일부 포함은 있지만 더 이상 필요하지 않습니다. 이것은 헤더 파일에 다른 헤더 파일이 포함되어 있다는 사실과 부분적으로 관련이 있습니다.
우리는 수입품을 재 배열하는데 너무 많은 시간을 할애하고 자동으로 이것을 할 수있는 도구가없는 것 같습니다. 그것은 우리에게 많은 시간을 절약 할 수 있습니다.
검색에 사용 된 기호가없는 포함을위한 트리가 포함 된 도구를보고 싶습니다. 소스가 변경되면 클린 포함을 유지하는 것은 정말로 어렵습니다. – Salw
첫 문장이 사실인지 잘 모르겠습니다. C++ 11 표준은 오래전에 완성되었고, 얼마 전 받아 들여지고 지난 주에 출판되었습니다. 나는이 시점에서 누군가가 그것에 기능을 추가하는 것을 의심한다. –
@Kerrek SB : C++ 0x에 대한 참조를 제거하는 텍스트가 변경되었습니다. 제안 해 주셔서 감사합니다. – Giorgio