< inline 함수 >
- 매크로 함수와 그냥 함수의 중간적인 성격을 띈 함수이다.
* 사용 이유
-
일반적인 함수를 사용하면 필요할 때마다 호출하여 사용하므로 실행파일의 크기를 줄일 수 있으나 제어권의 이동이 심하므로 실행 속도가 느려진다.
- 매크로 함수는 컴파일시 전개되어 치환되므로 제어권 이동이 발생하지 않으므로 속도가 빠르지만 데이터형 지정을 할 수가 없고 실행파일의 용량이 커지게 된다.
- 인라인 함수는 컴파일시 통째로 매크로처럼 전개되어 속도면에서 큰 이득을 얻는다. 그리고 데이터형 체크를 할 수 있다. 용량이 커지는 단점이 있긴 하지만 간단한 작업을 하는 함수의 경우에 이용하면 매우 편리하다.
* 장점
- function call이 생략되는 형태로 실행되기 때문에 function call에 의한 여러가지 오버헤드(CPU register 백업, stack 관리 등)를 생략하기 때문에 간단하면서 자주 사용되는 함수에는 더 빠른 효율성을 갖게 된다.
*단점
- 지나친 inline 함수의 사용은 실행파일이 커지게 하고, 이 때문에 페이지 폴트를 야기하는 원인이 되어 퍼포먼스가 떨어지게 되기도 한다.
* 매크로 함수와 인라인 함수의 차이점
- 안정성 측면에서 inline 함수가 앞선다.
* inline 함수의 제약조건
- inline 함수 내에서는 루프문(do while, while, for), switch, goto문을 사용할 수 없다.
- inline 함수 호출시 호출되기 전에 먼저 inline 함수가 정의되어 있어야 한다.
- inline 함수 내에서 재귀호출을 할 수 없다.
- inline 함수는 한 수식 내에서 두 번이상 호출될 수 없다.
- 함수 포인터로 inline 함수의 주소를 취할 수 없다.
- inline 함수는 호출방식이 아니라 치환전개방식이기 때문이다.
댓글 없음:
댓글 쓰기