# MFC 매크로
- `DECLARE` 매크로는 클래스에 위치하면서 구동의 선언을 의미
- `IMPLEMENT`는 이선언에 해당하는 부분의 구동을 의미
## 선언과 수행 매크로
|선언 매크로|수행매크로|설명|
|---|---|---|
|`DECLARE_DYNAMIC`|`IMPLEMENT_CYNAMIC`|베이스 클래스로부터 파생되어 변화된 클래스로 구동|
|`DECLARE_DYNCREATE`|`IMPLEMENT_DYNCREATE`|CObject클래스로 부터 파생되어 다양한 형태의 클래스로 생성됨|
|`DECLARE_MESSAGE_MAP`|`BEGIN_MESSAGE_MAP END_MESSAGE_MAP`|매시지 맵핑을 선언하고 수행매크로 사이에 설정된 메시지처리를 해당 클래스에서 구동|
|`DECLARE_SERIAL`|`IMPLEMENT_SERIAL`|CObject 클래스로 부터 파생된 다른 클래스와 연결 하도록 함|
- 이 매크로들이 발생되는 원인은 계층적으로 파생되어 클래스자체가 다양하게 변화되기 때문
- 이렇게 다양하게 변화되어도 현재 클래스의 기본적인 정보를 알아야 함
- 이렇게 하기 위해서는 도대체 근원이 어디인가를 알아야 하는것.
- 마찬가지로 현재 복잡하게 파생된 여러 클래스들의 베이스 클래스가 무엇인가를 알아야만 이 클래스를 정확하게 구동할수 있는 것임. 이럴때 사용하는것이 매크로.
- 또한 이렇게 매크로로 정의를 해놓음으로써 CRuntimeClass클래스를 이용하거나 또는 RUNTIME_CLASS 매크로를 이용하여 클래스를 CObject형태와 그외 여분의 정보로 분리할수 있게 됨.