Inline Function
인라인 함수
- 프로그램의 실행 속도를 높이기 위해 C++에서 새롭게 추가된 개념이다.
- C의 Macro에 대응되는 개념이다.
- 짧은 길이의 함수를 인라인 함수로 정의하면, 컴파일러는 적절히 판단하여(인라인으로 선언되어있다 하더라도 무조건 인라인 함수로 작용하지는 않는다!) 컴파일 시에 해당 함수가 호출되는 부분에 함수 호출을 발생시키는 것이 아닌, 해당 호출 구문은 함수 구현부분으로 대체해서 함수 몸체를 통째로 코드에 심어버리는 것과 같은 동작을 한다.
(짧은 코드의 함수의 경우에는 함수 내용을 실행하는 시간보다 함수를 호출하는데에 더 큰 시간이 소요되기 때문이다.)
- 위와 같은 이유로, 실행 시간 측면에서는 효율적일 수 있으나 메모리 공간 측면에서는 불리할 수 있다.
ex) 인라인 함수를 열 번 호출하는 경우, 그 함수의 사본 코드를 열 번 삽입해야 한다.
- 따라서, 인라인 함수는 함수 코드를 수행하는 데 걸리는 시간이 매우 짧을 경우에만 선언해야 하며, 또 빈번하게 호출되는 함수가 아니라면 절대적인 시간 절약은 그다지 크다고 볼 수 없게 된다.
(짧은 길이의 함수라 함은 보통 두 행 이하의 함수를 의미한다.)
- 인라인 함수는 Internal Linkage(내부 링크)를 가지기 때문에 함수 정의가 그 함수를 사용하는 파일 안에 있어야 한다.
(아니면, 인라인 함수가 정의되어 있는 헤더파일을 include 시켜야 한다.)
- 인라인 함수를 사용하기 위해서는, 함수 선언 앞에 \(\texttt{inline}\) 키워드를 붙이거나, 함수 정의 앞에 \(\texttt{inline}\) 키워드를 붙여야 한다.
(인라인 함수는 길이가 짧기 때문에, 함수 원형을 생략하고 원형이 놓일 자리에 함수 정의 전체를 위치시키는 것이 일반적인 관행이다.)
inline dataType functionName (parameters) {
Statement(s)
}
int main() {
...
}
// 실 사용 예시
inline double square (double x) {
return x*x;
}
int main() {
...
val = double(num);
...
}
* 인라인 함수는 일반 함수처럼 매개변수를 값으로써 전달한다. (Call by Value, Pass Arguments by Value)