inline 함수

2022. 4. 9. 01:13C++

2022.04.09 - [C++] - 매크로

매크로 함수의 장점

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

매크로 함수의 단점 

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

 

 

매크로 함수는 정의가 복잡하니 일반 함수처럼 정의가 가능할수 있게 할순 없을까?

C++의 인라인 함수는 이러한 요구를 100% 만족한다. 

 

인라인함수

inline int SQUARE(int x)
{
    return x*x;
}

 

하지만 인라인함수는 매크로 함수의 장점을 완전히 대체하진 못했다. 

#define SQUARE(X) ((X)*(X))

위와 같이 매크로 함수가 정의되면 이는 자료형에 의존하지 않는다. 

하지만 int형으로 정의된 함수를 자료형에 의존적일 수 밖에 없다. 

inline int SQUARE(int x){return x*x}
int main(void){cout<<SQUARE(3.14);}	//3*3결과인 9 출력, 데이터 손실 발생!

 

물론 C++에서의 템플릿을 이용하면 매크로 함수와 마찬가지로 자료형에 의존적이지 않은 함수가 완성된다. 

template <typename T>
inline T SQUARE(T x)
{
    return x*x;
}

'C++' 카테고리의 다른 글

예외처리  (0) 2022.04.10
범위지정 연산자  (0) 2022.04.09
매크로  (0) 2022.04.09
상수  (0) 2022.04.09
동적 할당  (0) 2022.04.03