프로그래밍 공부
작성일
2023. 4. 26. 21:40
작성자
WDmil
728x90

Inline 은 C++에서 선언된 함수가 인라인 함수 임을 컴파일러에 알리는 역할을 한다.

 

inline 키워드가 함수 선언 앞에 붙으면, 컴파일러는 그 함수를 인라인 함수로 취급한다.

컴파일러가 해당 함수를 호출하는 코드를( 일반적으로 함수를 호출할 때 에는 오버헤드가 발생하여 메모리를 끌어다 쓴다 )

그 함수의 코드 본문으로 대체하도록 한다.

 

즉, 함수를 호출하는것 이 아니라 애초에 그 함수의 원문이 같이 코드에 삽입되서 돌아가도록 만들어버린다.

 

  • 장점
    • 함수 호출의 오버헤드가 사라져서 빠른 실행이 가능하다.
    • 함수 호출 대신 코드의 복사가 일어남으로 함수호출로 인한 스택 메모리 사용량도 줄어든다.
    • 일반 함수보다 약간 더 빠른 속도를 보장한다.
  • 단점
    • 코드의 크기가 커지는 단점이 있다
      1. 함수를 인라인으로 전환하면 함수의 코드가 직접적으로 복사되기 때문에, 여러 번 호출되는 함수의 경우 코드의 중복이 발생하여 크기가 커지게 된다.
    • 인라인 함수의 경우 컴파일러의 최적화 에 따라 성능 차이가 있을 수 있다. 특히, 함수가 너무 길거나 복잡한 경우 컴파일러가 인라인 함수로 변환하는 것을 거부한다.

예시는 다음과 같다.

다음과 같이 선언되면, inline화 되어, 함수가 main에 같이 들어가 코드로 동작한다.

즉, 7번줄에 int c = max(a, b); 가 아니라, int c = a > b ? a : b; 로 동작하게 된다.

 

이러한 인라인 코드는 다음과 같을 때 선언된다.

  • 함수의 크기가 작거나, 자주 호출되는 함수일 때 인라인 함수로 선언하는것이 좋다. 그럼으로 프로그래머가 인라인을 붙여서 해도 무방하다.
  • 그러나, 함수의 크기가 크거나, 호출 횟수가 적은 경우에는 일반 함수로 선언하는것 이 바람직하고, 또한 인라인을 억지로 붙여도 컴파일러가 거부할 수 있다.
  • C++컴파일러는 함수를 인라인으로 선언할 것 인지 아닌지 자동으로 결정한다. 코드의 줄 수가 적을 경우 , 호출횟수가 적을 경우 인라인 키워드를 사용하지 않아도 임의로 인라인으로 바꾸어서 컴파일하게 된다.

 

728x90

'컴퓨터 용어 정리' 카테고리의 다른 글

객체지향 설계원칙(SOLID)  (0) 2023.04.28
C++ mutable  (0) 2023.04.26
C++ 생성자(constructor)  (0) 2023.04.22
C++ class  (0) 2023.04.22
객체지향의 4대(5대) 특징  (0) 2023.04.22