프로그램을 작성하다 보면 여러개의 클래스를 만들게 되는데
각 클래스마다 가지는 공통적인 함수들이 있을수 있다.
각 클래스를 생성하고 공통함수들을 일일이 추가하는 일은 지루한 일이다.
이 지루한 일을 매크로를 통해서 한방에 해결하도록 하자.
[DLL을 통한 기능 확장 - #2]의 예에서 IS_DECLARE_DATA_FUNC()이라는 매크로가 있는데,
아래와 같이 정의되어 있다.
#define IS_DECLARE_DATA_FUNC()\
19 public:\
20 virtual bool IsKindOf(const char* typeString);\
21 static const char* TypeString();\
22 static CPDMSData* GetInstance();\
이 세개의 함수가 공통적으로 사용되는 함수이다.
그리고 이 매크로는 클래스의 선언부에 사용된다.
첫번째 함수는 클래스가 typeString과 같은 타입을 가지는가 검사하는 함수이고,
두번째는 클래스의 타입을 구하는 함수 그리고 마지막은 클래스를 생성하는 함수이다.
그럼 당연히 함수를 정의하는 매크로도 있다. 아래를 보도록 하자.
#define IS_IMPLEMENT_DATA_FUNC(classname,baseclassname,typestr) \
25 bool classname::IsKindOf(const char* typeString)\
26 {\
27 if(0 == strcmp(classname::TypeString() , typeString)) return true;\
28 return baseclassname::IsKindOf(typeString);\
29 }\
30 const char* classname::TypeString()\
31 {\
32 static const char* typeString=typestr;\
33 return typestr;\
34 }\
35 CPDMSData* classname::GetInstance()\
36 {\
37 return new classname;\
38 }\
정의하는 매크로는 세개의 인자를 가진다.
첫번째는 클래스 이름.
두번째는 부모 클래스 이름.
마지막은 클래스의 타입이다.
이 두 매크로를 통해 지루한 작업을 간단히 끝낼수 있다.
각 클래스마다 가지는 공통적인 함수들이 있을수 있다.
각 클래스를 생성하고 공통함수들을 일일이 추가하는 일은 지루한 일이다.
이 지루한 일을 매크로를 통해서 한방에 해결하도록 하자.
[DLL을 통한 기능 확장 - #2]의 예에서 IS_DECLARE_DATA_FUNC()이라는 매크로가 있는데,
아래와 같이 정의되어 있다.
#define IS_DECLARE_DATA_FUNC()\
19 public:\
20 virtual bool IsKindOf(const char* typeString);\
21 static const char* TypeString();\
22 static CPDMSData* GetInstance();\
이 세개의 함수가 공통적으로 사용되는 함수이다.
그리고 이 매크로는 클래스의 선언부에 사용된다.
첫번째 함수는 클래스가 typeString과 같은 타입을 가지는가 검사하는 함수이고,
두번째는 클래스의 타입을 구하는 함수 그리고 마지막은 클래스를 생성하는 함수이다.
그럼 당연히 함수를 정의하는 매크로도 있다. 아래를 보도록 하자.
#define IS_IMPLEMENT_DATA_FUNC(classname,baseclassname,typestr) \
25 bool classname::IsKindOf(const char* typeString)\
26 {\
27 if(0 == strcmp(classname::TypeString() , typeString)) return true;\
28 return baseclassname::IsKindOf(typeString);\
29 }\
30 const char* classname::TypeString()\
31 {\
32 static const char* typeString=typestr;\
33 return typestr;\
34 }\
35 CPDMSData* classname::GetInstance()\
36 {\
37 return new classname;\
38 }\
정의하는 매크로는 세개의 인자를 가진다.
첫번째는 클래스 이름.
두번째는 부모 클래스 이름.
마지막은 클래스의 타입이다.
이 두 매크로를 통해 지루한 작업을 간단히 끝낼수 있다.
댓글
댓글 쓰기