C++은 다른 라이브러리를 사용하려면 무조건 헤더를 포함(#include <>) 해서 사용해야하지만, 뒤에 나온 언어에서는 그냥 import만해도 해당 기능을 사용할 수 있다.
그래서 ixx를 만든 것 같다.
Module의 장점
1. 모듈은 1번만 import 된다
2. import의 순서에 상관없다
3. 모듈의 이름을 지정할 수 있다
4. 인터페이스와 구현부를 분리 할 필요가 없다
ixx 파일 사용 방법
module; // global module fragment
// 각종 외부 헤더 추가
#include <vector>
// module 시작
export module math;
// import module ...
// submodule
export import math.time;
// 3) namespace를 지정
export namespace math
{
template <typename T>
T Add(T a, T b)
{
return a + b;
}
}
일반 cpp에서 사용 방법
#include <iostream>
using namespace std;
import math;
int main()
{
auto addValue = math::Add(1, 2);
}
파티션이라는 기능도 제공한다. 이 기능은 ixx하나에 모든 내용을 넣기에는 부담스럽기 때문에 여러개의 파티션(:)으로 나눌 수 있다.
MathPartition.ixx
export module MathPartition;
// Partition
export import :MathPartition_1;
export import :MathPartition_2;
MathPartition_1.ixx
export module MathPartition:MathPartition_1;
export void MyFunc()
{
}
MathPartition_2.ixx
export module MathPartition:MathPartition_2;
export void MyFunc2()
{
}
일반 cpp
#include <iostream>
using namespace std;
import math;
import MathPartition;
int main()
{
auto addValue = math::Add(1, 2);
MyFunc();
MyFunc2();
}
ref - https://openmynotepad.tistory.com/78
https://openmynotepad.tistory.com/79
'Basic Programming > C++ 20' 카테고리의 다른 글
C++20 - 지정된 초기화 (Designated Initialization) (1) | 2023.12.17 |
---|---|
C++20 - 삼항 비교 연산자(Three-Way Comparison) (0) | 2023.12.17 |
C++20 - Coroutine (1) | 2023.12.17 |
C++20 - Ranges (0) | 2023.12.10 |
C++20 - Concepts (0) | 2023.12.10 |