C언어

[C언어] 인라인(inline) 함수란?

_minit 2024. 10. 21. 15:52

C99부터 지원하는 inline 함수란 말 그대로 함수 호출을 호출된 자리에서 직접 삽입하는 방식의 최적화 기법이다. 일반적으로 함수를 호출하면 함수의 주소로 이동한 후 실행하고, 완료된 후 다시 원래 위치로 돌아온다. 이러한 과정은 시간적 오버헤드를 수반하며, 이는 특히 자주 호출되는 함수일수록 성능에 악영향을 미칠 수 있다. inline 함수는 이러한 문제를 해결하기 위해, 함수 호출 과정 없이 함수의 코드 자체를 호출 지점에 삽입하는 방식으로 최적화를 수행한다.

 

inline 키워드를 사용한다고 해서 모든 함수가 자동으로 인라인 처리되는 것은 아니다. 컴파일러는 함수의 크기나 복잡성을 고려하여 inline 요청을 무시할 수도 있다. 함수가 너무 커서 인라인 처리 시 코드 크기 증가가 성능 저하로 이어질 가능성이 있다고 판단될 경우, 해당 함수를 인라인 하지 않고 일반적인 함수 호출로 처리한다.

 

inline 함수는 성능이 중요한 경우 작고 간단한 함수에 사용하는 것이 좋다.

 

예시)

#include <stdio.h>

inline void printMyIdea() { 
    printf("I love money");
}


int main(void) {
    prntMyIdea();
    prntMyIdea();
    prntMyIdea();
}

 

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

#include <stdio.h>

int main(void) {
     printf("I love money");
     printf("I love money");
     printf("I love money");
}
728x90

'C언어' 카테고리의 다른 글

[C언어] 단락 평가  (0) 2024.10.22
[C언어] gets()의 결함  (0) 2024.10.21
[C언어] 타입 한정자(type qualifiers)란?  (0) 2024.10.18
GCC(GNU Compiler Collection)란?  (0) 2024.10.18
[C언어] 다중 평가 문제  (0) 2024.10.17