c++

[C++]인라인(inline) 함수

개발블로거 2020. 11. 5. 22:51

[C++] 인라인(inline) 함수

 

인라인 함수라는 이름은 프로그램 코드 라인안에 있는 함수라는 뜻이다. 

 

인라인 함수보다 먼저 매크로 함수에 대해 알아보자

매크로 함수

       장점:함수가 코드 안에 있어서 성능 향상이 될 수 있다. 스택의 할당 과정이 없다.

       단점:함수의 정의가 복잡하다. 따라서 복잡한 함수는 정의하기 어렵다.

 

예를 들면 

#define ADD(x) ((x) + (x))

int main(void)
{
	std::cout<< ADD(3) << std::endl;
    return 0;
}

이렇게 작성된 것이

#define ADD(x) ((x) + (x))

int main(void)
{
	std::cout<< ((3) + (3)) << std::endl;
    return 0;
}

이렇게 풀이된다는 것이다.

 

위와 같은 매크로 함수의 장점은 가지되 단점을 보완한 것이 C++에 있는 인라인 함수입니다.

inline int ADD(int x) 
{
	return x + x;
}

int main(void)
{
	std::cout<< ADD(3) << std::endl;
    return 0;
}

인라인 함수도 마찬가지로 스택의 할당 과정이 없다. 그리고 복잡한 함수도 인라인 함수로 정의할 수 있게 되는 것이다.
매크로 함수는 선행 처리기에서 처리를 해서 괄호를 써야 했지만 인라인 함수는 컴파일러가 처리하기 때문에 괄호를 사용하지 않아 더욱 편리하다. 또한 인라인 함수는 함수를 인라인으로 할지 안 할지를 컴파일러가 결정합니다. 컴파일러가 작성한 인라인 함수가 타당하다고 생각하면 인라인 함수가 되지만 그렇지 않으면 인라인이 무시됩니다.

 

매크로 함수만의 장점

#define ADD(x) ((x) + (x))

이렇게 매크로 함수는 자료형에 자유롭지만 인라인 함수는 자료형에 자유롭지 못합니다. 그렇기 때문에 인라인 함수를 매크로 함수처럼 사용하고 싶다면 함수를 오버 로딩해서 만들어야 합니다. 다른 방법도 있긴 하지만 그건 나중에....