직업 이야기/MFC

Define 매크로 쓰지 않기

유부프로그래머 2016. 5. 27. 17:09

The C++ Programming Language 에 비슷한 내용이 나와 있다.

정말 강추하는 책이다. 고수님 찾지 말고 이 책 보자. 창시자님이 쓴 책이니까. -_-;

 

// case 1

#define min(a,b) (((a) < (b)) ? (a) : (b))

 

 

// case 2

template<class T> inline const T& min(const T& v1, const T& v2)
{
    return (v1 < v2 ? v1 : v2);
}

 

놀랍게도 사용방법은 똑같다.

 

int i=3, j=7, k=0;

k = min(i,j);

 

 

다만 1의 경우에는 언제 소스 바꿔치기를 시도할지 모른다.

define 속성상 같은 이름이라고 에러나는것이 아니라 이름을 바꿔치기하고

그 후에 대한 에러를 내뱉는다. 하지만 볼 수 있는 소스는 그 전의 소스라는것이다.

(define의 결점이다.)

 

2의 경우에는 자동으로 T 가 int로 바뀐다. (우와~~)

게다가 inline화가 성공했다면 define이나 오버해드는 같다.



출처 : http://blog.naver.com/seeper0/120021546921