2016. 12. 7. 22:37 C++/공부
C++] 기초(4) - 인라인(inline) 함수
** 본 게시물은 C++을 복습하며 정리하는 글입니다. 틀린 부분이 있다면 주저하지 마시고 바로 태클 걸어주세요!! 현재 "윤성우의 열혈강의 C++"교재로 공부중이며 좀 더 상세한 설명을 원하시는 경우에는 책을 구매해서 찾아보시길 권장합니다.
[들어가기 전]
'inline' 함수는 'in'과 'line'의 합성어로 'in'은 코드 내부를 의미하고 'line'은 프로그램 코드의 라인을 의미한다. 그러므로 인라인 함수는 프로그램 코드라인 안으로 들어간 함수라는 뜻이다.
우선 C언어의 '매크로'함수와 비교해보자.
"매크로 함수"의 장단점을 설명하자면
장점) 일반 함수에 비해서 실행속도가 빠르다.
단점) 복잡한 함수를 매크로로 정의하는데 한계가 있다.
라고 할 수 있다.
그렇다면 매크로함수의 "빠른 속도를 가진 상태로 복잡한 함수도 정의할 수 있는 방법은 없을까??" 이러한 이유로 나온 함수가 바로 "인라인 함수"이다.
[예제]
ex)
출력결과)
5+7=12
[추가]
매크로를 이용한 함수의 인라인화는 전처리기에 의해서 처리됨. 그러나 키워드 inline을 이용한 함수의 인라인화는 컴파일러에 의해서 처리된다. 따라서 컴파일러가 함수의 인라인화가 오히려 성능저하의 요소가 된다고 판단 할 경우 이 키워드를 무시하기도 하며, 필요한 경우 일부 함수를 임의적으로 인라인 처리하기도 한다.
[개인적인 궁금함]
모든 함수를 인라인화해서 처리하면 프로그램이 빨라지지 않을까??
답변]
inline 화 한다는 것이 함수를 호출한 부분의 함수 내용을 끼워 넣는다고 볼 수 있습니다. 따라서 모든 함수를 inline 화 해버리면, 그 함수를 호출 할 때 마다 그 함수의 전체 내용이 들어가는 것이기 때문에 결과적으로 프로그램의 크기가 커지기 마련이죠..
'C++ > 공부' 카테고리의 다른 글
C++] 기초(6) - const 키워드 (0) | 2016.12.08 |
---|---|
C++] 기초(5) - 이름공간(namespace) (0) | 2016.12.07 |
C++] 기초(3) - 함수 매개변수의 디폴트 값 (0) | 2016.12.06 |
C++] 기초(2) - 함수 오버로딩(Overloading) (0) | 2016.12.06 |
C++] 기초(1) - 데이터 입출력 (0) | 2016.12.06 |