[C언어/C++] 인라인(inline) 함수 사용법 & 예제

 인라인 함수 사용법 

inline 함수의원형
inline 함수의정의

함수 앞에 inline이라는 키워드를 위치시키는 것으로 인라인 함수를 선언, 생성 할 수 있습니다.

 

인라인 함수란?

인라인 함수는 정의한 코드들이 인라인 함수 호출 시 그 자리에 인라인 함수 코드 자체가 안으로 들어간다는 뜻입니다. 즉, 함수의 내용을 호출을 통해서 실행시키는 것이 아니라, 호출하는 코드 자체가 함수 내용의 코드가 됩니다. 예를 들어 아래의 예제처럼 인라인 함수를 사용했다고 해보겠습니다.

#include <iostream>

inline void PrintHello() {
    cout << "Hello, World" << endl;
}

int main() {
    PrintHello();
    PrintHello();
    return 0;
}

위의 코드가 컴파일 과정에서 아래와 같이 바뀌게 됩니다.

#include <iostream>

int main() {
    cout << "Hello, World" << endl;
    cout << "Hello, World" << endl;
    return 0;
}

인라인 예제

이렇듯 인라인 함수(inline function)는 컴파일러가 함수를 호출하는 대신, 그에 대응하는 함수 코드로 대체하여 호출되는 모든 장소에 삽입할 것을 요청할 수 있습니다.

 

인라인 함수의 장단점

위의 인라인 함수 사용 예제에서 인라인 함수의 장점과 단점이 명확히 나옵니다. 우선 장점은 무엇보다도 프로그램의 실행속도가 빨라진다는 점입니다. 함수는 호출될 때마다 처리해야 하는 작업이 상당히 많습니다. 함수 종료 후 반환할 위치를 알려줘야 하니 실행 중인 현재 명령어의 주소를 저장도 해야 하고 함수도 호출해야 합니다. 함수를 호출하려면 프로그램 실행 중 함수를 실행해야 하면 해당 함수의 주소로 점프시켰다가, 함수의 처리가 종결되면 다시 원래의 자리로 돌아오게 해야 하는데 이러한 과정에서 시간이 소요됩니다. 반면에 인라인 함수는 컴파일된 함수 코드가 프로그램의 코드 안에 직접 삽입되므로 이러한 과정이 필요가 없어 프로그램 속도 측면에서는 유리하다고 볼 수 있습니다.

 

반대로 메모리 사용 측면에서는 인라인 함수가 일반 함수보다 불리합니다. 위의 예제를 보시면 아시겠지만 인라인 함수는 호출한 부분이 몇번이 되었듯 컴파일러는 인라인 함수의 사본을 호출한 부분에 계속해서 삽입해야 하기 때문에 그만큼 메모리의 낭비가 있을 수밖에 없습니다. 그러므로 인라인 함수를 사용하기에 적절한곳은 호출이 많이 일어나지 않는 함수이거나 함수 내부 코드의 양이 매우 실행 속도가 짧은데 비해 함수의 호출시간이 부담스럽다고 생각할 때만 인라인 함수로 만들어 활용하는 것이 적당합니다.

 

인라인 함수와 매크로 함수

인라인 함수와 매크로 함수는 동작방식과 결과에 대해 공통점이 매우 많습니다. 매크로 사용법과 인라인 함수와 매크로 함수의 차이점에 대해 궁금하시다면 아래의 글을 참고해주세요.

[C언어/C++] 매크로(define) 함수 사용법 & 예제

 

댓글

Designed by JB FACTORY