모듈 인터페이스
글로벌 모듈 프래그먼트
- #include 는 여기에 둬야한다.
- 이 문장은 반드시 이름을 지정한 명명 모듈 선언문 앞에 나와야 한다.
- 이름을 지정하지 않은 무명 모듈 선언문으로 시작해야 한다.
module; // 글로벌 모듈 프래그먼트 시작
#include <cstddef> // 레거시 헤더 파일 추가
export module person; // 명명 모듈 선언문
모듈 퍼뷰
- 명명 모듈 선언문부터 파일의 끝 사이에 나오는 모든것을 뜻한다.
익스포트 블록
- 블록으로 감싸서 통째로 선언문을 export 할 수 있다.
export
{
namespace DataModel
{
class Person {};
class Address {};
}
}
모듈 구현 파일
- 모듈 인터페이스 파일 하나와 모듈 구현 파일 여러개로 나눌 수 있다.
- 보통 .cpp 확장자를 사용한다.
//구현 코드는 아래와 같이 작성한다.
// 모듈 선언문. 이때 export 키워드는 생략한다.
// 암묵적으로 import person 선언문을 담고 있다.
// 헤더 모듈의 person과 동일한 모듈의 일부분 이기 때문에 module 헤더에서 선언한 include가 딸려온다.
module person;
using namespace std;
person::person()
{
}
...
- 모듈 구현 파일은 아무것도 익스포트 할 수 없다.
- export는 오직 모듈 인터페이스만 할 수 있다.