< #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 관리만 잘 된다면 난독 코드가 될 가능성이 낮기 때문에 개인적으로 선호한다.




+ Recent posts