'inline'에 해당되는 글 1건

  1. 2019.04.15 C++ inline 함수
posted by 쿸크 2019. 4. 15. 16:27

inline 함수

내부에서 작성된 코드의 속도와 함수의 장점을 결합하는 방법
컴파일러에서 함수를 인라인 함수로 처리하도록 요청한다. 컴파일러가 코드를 컴파일하면 모든 인라인 함수가 인-플레이스(in-place) 확장된다. 즉, 함수 호출이 함수 자체의 내용 복사본으로 대체되어 함수 오버헤드가 제거된다

 

특징

- 인라인 함수를 사용하려면 함수 선언 앞에 inline 이라는 키워드를 붙이거나 함수 정의 앞에 inline이라는 키워드를 붙인다.

- 클래스 멤버 함수가 inline을 사용하려면, 함수 정의의 위치가 *.h에 있어야 한다. 안 그러면 확인할 수 없는 외부 참조라고 뜬다.

- 프로그래머가 inline 선언을 해도 컴파일러가 인라인화를 거부할 수 있다.

- 프로그래머가 inline 선언을 안 해도 컴파일러가 인라인화를 할 수 있다.

- 함수의 덩치가 크거나 재귀호출이면 inline 요구를 거절하는 컴파일러도 있다.

- 함수 코드의 수행 시간이 짧고 빈번하게 호출되는 함수가 아니라면, 인라인 함수로 인한 절대적인 시간 절약은 그다지 크지 않다.

 

장점

- 함수 내부의 코드를 재사용할 수 있다.

- 인스턴트 코드보다 함수에서 코드를 변경하거나 업데이트하기가 더 쉽다.

- 함수 이름을 통해 코드가 무엇을 의미하는지 이해하기 더 쉽다.

- 함수는 함수 호출 인수가 함수 매개 변수와 일치하는지 확인하기 위해 타입 검사를 한다. (매크로는 안한다.)

- 함수는 프로그램을 디버그하기 쉽게 만든다.


단점

인라인 함수가 모든 함수 호출에 대해 적절한 위치에서 확장되므로 인라인 함수가 길거나 인라인 함수를 여러 번 호출하는 경우 컴파일된 코드를 약간 더 크게 만들 수 있다.
- 메모리 사용 측면에서는 인라인 함수가 일반 함수보다 불리하다. 이유는 어떤 프로그램에서 인라인 함수를 열 번 호출한다면, 프로그램은 그 함수의 사본을 프로그램의 코드 안에 열 번이나 삽입해야 하기 때문이다.

- 매크로 함수와 달리 자료형에 독립적이지 못 하다. 단, 템플릿을 이용하면 자료형에 독립적으로 사용할 수 있다.

'Programing > C, C++' 카테고리의 다른 글

STL Chrono  (0) 2023.01.10
C++ Singleton 패턴  (0) 2019.04.15
C++ MFC CreateProcess() 사용법  (0) 2017.11.08
C++ GetLastError() 리턴 값 의미  (0) 2017.11.08