c++
C++ Study. module system
big whale
2024. 1. 21. 16:52
C++ 모듈 시스템은 C++20 표준의 중요한 새로운 기능 중 하나입니다. 이 시스템은 헤더 파일 기반의 전통적인 include 시스템 대신 소스 코드를 모듈 단위로 구성하는 방식으로 코드를 구성하도록 하는 것을 목표로 합니다. 여기에는 여러 가지 이점이 포함되어 있습니다.
모듈 정의
// helloworld.cpp
export module helloworld; // module declaration
import <iostream>; // import declaration
export void hello() // export declaration
{
std::cout << "Hello world!\\n";
}
모듈 사용
// main.cpp
import helloworld; // import declaration
int main()
{
hello();
}
모듈 시스템의 주요 특징과 장점:
- 종속성 관리: 모듈 시스템은 모듈 간의 종속성을 명시적으로 정의하고 관리할 수 있습니다. 이는 불필요한 헤더 파일의 재포함과 같은 일반적인 문제를 방지하고 더 효율적인 종속성 관리를 가능케 합니다.
- 컴파일 속도 향상: 모듈 시스템은 전체 코드를 다시 컴파일하지 않고도 변경된 모듈만 다시 컴파일할 수 있는 기능을 제공합니다. 이는 전통적인 include 시스템에서의 전체 재컴파일을 피할 수 있도록 도와줍니다.
- 네임스페이스 통제: 모듈은 자체적인 네임스페이스를 가지고 있어, 같은 이름의 심볼이 충돌하는 것을 방지할 수 있습니다. 이는 코드의 가독성과 유지보수성을 향상시키는 데 도움이 됩니다.
- 가시성 제어: 모듈은 export 지시어를 사용하여 다른 모듈에서 사용 가능한 인터페이스를 명시적으로 정의할 수 있습니다. 이를 통해 모듈이 외부로 노출하는 부분을 명확히 제어할 수 있습니다.
- 전처리기 제거: 모듈 시스템은 전처리기의 사용을 줄일 수 있습니다. 전통적인 헤더 파일 기반의 include 시스템에서의 매크로 및 전처리기 지시어 사용이 감소하면서 코드의 가독성이 향상됩니다.