Develop
2013.04.23 15:17

[c++] 인라인 함수에 대한 설명

Views 7110 Votes 0 Comment 0
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
간단하게 말하면 장점은 function call이 생략되는 형태로 실행되기 때문에 function call에 의한
여러 가지 오버헤드 - CPU register 백업, stack 관리 - 등을 생략하기 때문에 
간단하면서 자주 사용되는 함수에는 더 빠른 효율성을 갖게 됩니다. 

하지만 항상 더 좋은 퍼포먼스를 보장하는 것은 아닙니다. 
지나친 inline함수의 사용은 실행파일이 커지게 하고, 
이 때문에 페이지 폴트를 야기하는 원인이 되어 퍼포먼스가 떨어지게 됩니다.

C의 #define을 이용하는 것과 비슷하지만 안정성인 측면에서 inline함수가 앞섭니다.

다음은 정리된 설명입니다.

* inline함수
    - 매크로함수와 그냥 함수의 중간적인 성격을 띤 함수이다.

    - 일반적인 함수를 사용하면 필요할 때마다 호출하여 사용하므로 실행파일의 크기를
      줄일 수 있으나 제어권의 이동이 심하므로 실행 속도가 느려진다.

     - 매크로 함수는 컴파일시 전개되어 치환되므로 제어권 이동이 발생하지 않으므로
      속도가 빠르지만 데이터형 지정을 할 수가 없고 실행파일의 용량이 커지게 된다.

    - 인라인 함수는 컴파일시 통째로 매크로처럼 전개되어 속도면에서 큰 이득을 얻는다.
      그리고 데이터형 체크를 할 수 있는 함수이다.
      용량이 커지는 단점이 있긴 하지만 간단한 작업을 하는 함수의 경우에 이용하면 매우 편리하다.

* inline 함수의 제약조건
    - inline 함수 내에서는 루프문(do whie, while, for), switch, goto문을 사용할 수 없다.
    - inline 함수호출시 호출되기 전에 먼저 inline 함수가 정의되어 있어야 한다.
    - inline 함수 내에서 재귀호출을 할수 없다.
    - inline 함수는 한 수식 내에서 두 번이상 호출될수 없다.
    - 함수 포인터로 inline 함수의 주소를 취할 수 없다.
    - inline 함수는 호출방식이 아니라 치환전개방식이기 때문이다. 

영어 보시는 데에 지장이 없으시면 
http://camars.kaist.ac.kr/~jaewon/special/c++-faq/inline-functions.html
를 참조하시면 더 많은 정보가 있습니다.
?

List of Articles
No. Category Subject Author Date Views
629 Develop [js] 양원님이 공유해 주신 유료(5$란다ㅋ) 자료 ㅋㅋ secret hooni 2013.04.23 7948
628 Develop [c++] Win32API를 이용한 ExitWindowsEx 사용한 예제코드 hooni 2013.04.23 7955
627 Develop [c] 퀵정렬(quick sort) 예제 소스.. file hooni 2013.04.23 7974
626 Develop [doc] Equation Solving에 대한 발표자료.. file hooni 2013.04.23 7979
625 Develop [c] 자료구조 그래프(graph) 소스코드 - 확인해볼 것.. file hooni 2013.04.23 7992
624 Develop [c] 문자열 처리 관련 함수들 설명 hooni 2003.04.23 7997
623 Develop [c] 구구단 최단라인 ㅡㅡ; file hooni 2013.04.23 8003
622 Develop [c] Unix Domain Socket 을 이용한 IPC hooni 2013.04.23 8011
621 Develop [java] RGB코드를 HEX코드로 변환하는 코드 ㅎㅎ hooni 2013.04.23 8013
620 Develop 논문에 들어갈 툴바 테스트 해볼 것.. secret hooni 2013.04.23 8013
619 Develop [c] 포인터와 함수포인터에 대해.. hooni 2003.04.23 8019
618 Develop [c] 프로세스 검사하기 hooni 2013.04.23 8027
617 Develop [js] 셀렉트박스(select)의 옵션(option) 동적으로 추가/제거 file hooni 2013.04.23 8060
616 Develop [c] 유닉스 프로그램에서 인수처리 해주는 getopt() 함수 file hooni 2013.04.23 8071
615 Develop [c] 반올림 함수!! ㅋㅋ hooni 2003.04.23 8084
614 Develop [c] 레포트용으로 제출했던 여러 소스코드 모음 file hooni 2003.04.23 8084
Board Pagination Prev 1 ... 33 34 35 36 37 ... 74 Next
/ 74