336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

inline 함수를 의역하자면 프로그램 코드라인 안으로 들어가 버린 함수를 뜻합니다.
C언어에서의 매크로 함수와 비교를 맘ㄶ이 하는데... 잠시 매크로 함수의 장점을 보자면..
"일반적인 함수에 비해서 실행속도의 이점이 있다."
라는 실행속도의 이점으로 성능향상에 도움이 될 수 있다는거죠
반면 단점으로는
"정의하기가 어렵고 복잡한 함수의 형태로 정의하는데에 한계가 있다."
라는 단점이 있습니다.

이러한 매크로 함수의 정의가 복잡하니 일반 함수처럼 가능하면 좋겠다는 생각에 나온 것이 인라인 함수 입니다. (그렇다고  100% 만족한다는 내용은 아님)

참고로 매크로를 이용한 함수의 인라인화는 전처리기에 의해서 처리가 되지만, 키워드 inline을 이용한 함수의 인라인화는 컴파일러에 의해서 처리가 됩니다.
따라서 컴파일러는 함수의 인라인화가 오히려 성능에 해가 된다고 판단할 경우, 이 키워드를 무시해 버립니다.
또한 컴파일러는 필요한 경우 일부 함수를 임의로 인라인 처리하기도 합니다.

사실 인라인 함수가 매크로 함수의 장점을 완전히 대체를 하지는 않습니다.
대표적인 예로

#define SQUARE(x) ((x)*(x))
의 경우에 x값의 자료형이 상관없이 매크로에서는 데이터 손실이 발생 하지 않지만...
인라인 함수의 경우에는
inline int SQUARE(int x) {return x*x}
와 같이 float형이나 double형의 인자가 들어오는 경우 데이터 손실이 발생 합니다.

단점이라고 예기는 해도 사실 template을 사용하면 데이터 손실 없이 사용이 가능할 수 있습니다.

template 
inline T SQUARE(T x) 
{
    return x*x
}

한가지 더 주위를 해 줘야 하는 부분은 inline 함수의 위치입니다.
대부분 선언부는 헤더파일에 구현부분은 cpp로 나누어서 관리를 하는데 inline 함수의 경우에는 선언과 동시에 구현부가 같이 존재를 해야 하지요.
이러한 이유는 인라인 함수의 특징을 잘 생각해 보면 답을 알 수가 있습니다.

"컴파일 과정에서 함수의 호출 문이 있는 곳에 함수의 몸체 부분이 삽입이 되야 한다."

위와 같은 이유로 인라인 함수는 컴파일러에 의해서 해당 함수의 몸체가 대체 되야 하기 때문에 선언과 동일한 파일에 저장이 되어 컴파일러가 참조를 할 수 있게 해야 합니다.

출처 : 윤성우 저 열혈강의 C++ 프로그래밍 (개정판)
블로그 이미지

뚱땡이 우주인

,