#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;
}