[c++]inline 함수

tahn·2022년 7월 5일
0

C++

목록 보기
1/8
post-thumbnail

함수를 직접 복사해서 호출하지 않고, 함수의 기능만 복사해서 사용하는 함수

현재 나온 컴파일러의 경우 적절한 함수를 inline화 해서 쓰기에 요즘엔 사용하지 않는다.

int min(int x, int y)
{
    return x > y ? y : x;
}


int main()
{
    std::cout << min(5, 6) << '\n';
    std::cout << min(3, 2) << '\n';
    return 0;
}

위 프로그램은 함수min()을 두 번 호출하여 함수 호출 오버헤드 패널티를 두 번 발생시킨다.

min() 함수는 짦은 함수이므로 인라인화 하기 좋다.

inline int min(int x, int y)
{
    return x > y ? y : x;
}
이제 프로그램이 main()을 컴파일하면 main() 다음과 같이 작성된 것처럼 기계 코드를 생성한다.int main()
{
    std::cout << (5 > 6 ? 6 : 5) << '\n';
    std::cout << (3 > 2 ? 2 : 3) << '\n';
    return 0;
}

결과적으로 더 빠르게 실행된다.

코드를 부풀릴 가능성이 있으므로 함수를 인라인화 하는 것은 내부 루프가 없는 짧은 함수에 가장 적합하다.

그러나 요즘은 굳이 인라인 함수로 작성하지 않아도 컴파일러가 알아서 인라인 함수 화 시켜주기에 잘 쓰지 않는다고 한다.

profile
html 개발자

0개의 댓글