< #define을 사용하는 경우 >
1. 국가별 코드가 다르게 들어가야 하는 경우.
2. 버전에 따라 코드가 다르게 들어가야 하는 경우.
3. 솔루션(구성 관리자)에 따라 각각 다르게 빌드 되어야 하는 경우. (Ex. Debug, Release, Etc...)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #define A_SYSTEM //기존 코드 #define B_SYSTEM //신규 추가 코드 #ifdef A_SYSTEM #ifdef B_SYSTEM // 신규 추가 코드 #else // 기존 코드 #endif #endif ================================================================================== #if defined (A_SYSTEM) || defined (B_SYSTEM) // 코드 또는 디파인 #endif #if defined (A_SYSTEM) && defined (B_SYSTEM) // 코드 또는 디파인 #endif ================================================================================== #if defined (A_SYSTEM) // 코드 또는 디파인 #elif defined (B_SYSTEM) // 코드 또는 디파인 #else // 코드 또는 디파인 #endif | cs |
#define의 장점은 구분이 명확하지만 많이 포함되면 엄청난 난독형 코드가 될 가능성이 높다.
SVN을 이용하여 Revision으로 #define을 대체하는 경우도 존재 한다.
SVN은 Revision 관리가 소홀히 되는 경우 오동작 버그 발생하는 경우를 종종 봐 왔는데 오히려 관리가 소홀하다면 #define이 더 좋을 수 있다는 생각도 든다.
SVN의 시스템 구현별 Revision 관리만 잘 된다면 난독 코드가 될 가능성이 낮기 때문에 개인적으로 선호한다.
'Languages > cplusplus' 카테고리의 다른 글
비트 연산자는 어디에 사용되는가? (0) | 2012.04.16 |
---|---|
선언과 정의 찾아가기가 안맞을 때 (0) | 2012.01.05 |
#ifndef 와 #pragma의 차이점 (0) | 2011.11.07 |
window 컴파일과 linex 컴파일에 관한 메모 (0) | 2011.09.23 |
UML 참조 사이트 링크 (0) | 2011.08.30 |