본문 바로가기
Computer Science/C & C++

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

by 진뚱 2021. 7. 6.
728x90

인라인(inline) 함수는 무엇일까

inline함수는 in line, 프로그램 코드 라인 안에 있는 함수라는 뜻이다. 아래 함수를 한번 보자.

#include<iostream>

using namespace std;

inline int ADD(int a)
{
	return a+1;
}

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

 

 

 

 

이렇게 설정해두면 매크로함수의 경우에는 전처리기에서 처리되지만 inline함수는 컴파일러에서 처리한다.

따라서 전처리기를 사용할때는 모두 적용이 되는 반면, inline함수를 이용해서 컴파일러에서 처리하는 경우에는 inline화 해서 코드에 넣었을 때 성능에 불리하다고 판단하면 inline 키워드를 무시해버리기도 한다. 또는 인라인 선언 되어있지 않지만 인라인을 했을때 유리하다고 판단하는 경우에는 임의로 inline화 시키기도 한다.

위에서 보이는 인라인 함수에는 단점이 있다. 바로

ADD(5.05)	// 1 + 5.05 = 6.05? but 6

 

 

이렇게 자료형이 다르게 들어오는 경우 데이터 손실이 발생할 수 있다는 점이다. 매크로에서는 발생하지 않는 단점이기도 하다.

하지만 이런 경우 C++에서는 Template을 통해 해결할 수 있다.

#include<iostream>

using namespace std;

template <typename T>
inline T ADD(T a)
{
	return a+1;
}

int main()
{
	cout << ADD(5.05) << endl;
    return 0;
}

위처럼 코드 실행시 데이터 손실이 발생하지 않음을 알 수 있다.

728x90

댓글