#define 와 inline의 차이점


#define


장점 : 일반적인 함수에 비해 실행속도의 이점이 있다.

단점 : 정의하기가 어렵다. 복잡한 함수를 매크로의 형태로 정의하는데 한계가 있다.


#define SQUARE(x) ((x)*(x))


int main(void) {

std::cout<<SQUARE(5)<<std::endl;

return 0;

}


inline

장점 : 매크로 함수 지만 일반 함수 처럼 정의가 가능

단점 : 자료형에 따라 함수를 늘려야 한다.(다만,템플릿을 이용하면 제외)


inline int SQUARE(int x) {

return x*x;

}


int main(void) {

std::cout<<SQUARE(5)<<std::endl;

return 0;

}


템플릿을 이용한 inline

자료형에 구애 받지 않고 매크로 함수 구현 가능 하게 된다.


template <typename T>


inline  T SQUARE(T x) {

return x*x;

}


int main(void) {

std::cout<<SQUARE(5)<<std::endl;

return 0;

}


+ Recent posts