본문 바로가기

CS/Cpp

Inline

inline (인라인) keyword

assembly language의 MECRO와 같은 기능이다.

함수를 호출하게 되면 오버헤드가 발생한다.
하지만 인라인을 사용하면 컴파일 시 해당 블럭으로 분기하는 것이 아니라 해당 코드를 호출한 부분에 끼워 넣는다.
그럼 분기가 발생하지 않아 오버헤드 역시 발생하지 않는다.

그러나 이것을 사용하면 호출한 부분의 코드가 그만큼 늘어나게 된다. 
즉, 여러 번 사용할 경우 호출한 코드는 계속 늘어난다는 것이다. 
그럼 나중엔 어마어마한 덩어리가 되겠지... 이럴 땐 그냥 함수 호출이 낫다.

Inline ex)
#include<iostream>
using namespace std;

// 정수값을 제곱하는 함수
inline double square(double i)
{
                 return i *i;
}

int main()
{
                 double result;

                cout << "2의 제곱 " ;
                result = square(2.0);
                cout << result << endl;

                cout << "3의 제곱 " ;
                result = square(3.0);
                cout << result << endl;

                 return 0;

                 /*
                여기서 result = square(2.0); 은 result = i*i 코드로 대체되어 컴파일된다.
                */
}

'CS > Cpp' 카테고리의 다른 글

Information-hiding  (0) 2013.03.12
Encapsulation  (0) 2013.03.12
Reference  (0) 2013.02.18
Namespace  (0) 2013.02.18
Runtime Error  (0) 2013.02.18