인라인함수


#include 
inline int add(int a, int b){
     return a - b;
}

int main(int argc, char* argv[]){
     add(5,3);
     return 0;
}

위 프로그램의 결과값은 2입니다.
inline을 붙이지 않는다고 해도 결과값은 똑같이 2입니다.

그럼 왜 inline함수를 쓸까요?

inline을 쓰지 않았다고 가정하면
실행과정은..

1. 메인함수가 실행된다
2. 메인함수가 멈춘다 (add함수 호출로 인해)
3. add함수를 호출한다
4. add함수에서 계산한 값을 리턴한다
5. 메인함수로 리턴값을 돌려준다


하지만, inline함수를 사용했다고 하면,
실행과정은..

1. 메인함수가 실행된다
2. add함수가 실행된다
3. add함수에서 계산한 값을 리턴한다


이것만 봐서는 얼른 이해가 안되실 수 있습니다
가장 큰 차이점은 함수가 호출될 때 메인함수가 멈추고 호출된 함수로 넘어가는것이 아니라 inline함수 자체가 메인함수에 박히게 되는 것입니다.
즉, 메인 함수가 돌아가면서 함수가 호출될 때마다 일일히 멈추지 않고 메인 함수에서 함수의 본체가 박혀버린다면 함수호출이 일어나지 않고 그로 인해 메인함수의 멈춤현상도 발생하지 않기 때문에, 프로그래밍에 있어 효율적입니다.

함수를 선언하거나 정의할 때 함수의 자료형 앞에 inline을 붙이는것으로 선언되구요.

그렇다고 무조건 inline함수를 쓴다고 다 효율적이지는 않습니다.
인라인 함수 코드자체의 동작하는 시간이 함수를 호출할 때 걸리는 시간보다 훨씬 길다면 함수를 호출하는거나, 인라인 함수를 사용하는거나 별 차이가 없을겁니다.


'Programming Language > C/C++' 카테고리의 다른 글

struct, typedef  (0) 2014.05.13
C++ TR1 설치  (0) 2014.05.13
릴리즈모드 링크에러  (0) 2014.05.11
Namespace  (0) 2014.05.11
HRESULT, LRESULT  (0) 2014.05.11
Posted by 긍정왕오킹