본문 바로가기

Programming/C++

인라인 함수

inline 함수는 말 그대로 직역하면 '라인 안으로' 라는 의미를 가집니다. 어떤 의미로 사용되는지 알아보도록 하겠습니다.






매크로 함수에 대해서 알고 계시나요?


모르시면 여기로: http://keybreak.tistory.com/44

저도 다 까먹었다는게 함정. ㅋㅋㅋㅋㅋ 


매크로 함수의 장점은 실행 속도가 빠르다는 것 입니다. 하지만 정의하기가 조금 힘듭니다. 간단한건 상관없지만 복잡해지면 그렇죠.




두개의 이미지를 보셨을때 다른 점을 찾아보시면 출력하는 값이 test(5) 이냐 (5)*(5) 이냐 차이입니다. 


이게 인라인 함수입니다. ? 뭐라고 설명도 안하는데 끝?


inline 함수는 함수 몸체부분이 대체되었을때 인라인화 되었다고 합니다.

즉, 2번째 이미지가 인라인화 되었다고 할 수 있습니다.





인라인 함수를 사용하려는 이유는 일반 함수처럼 정의가 가능하면 좋겠다. 라고 생각되기 때문입니다.

다음 예제를 보도록 하겠습니다.





inline 함수로 정의를 했습니다. 보통 코딩을 하면 함수를 만드는 경우가 많은데 그때 함수 만드는 것처럼 만들고 싶다고 생각하기 때문에 inline 함수가 사용되는 겁니다.




여기서 매크로와 인라인 함수의 차이가 나타나게 됩니다.




값을 12.12 를 넣어주었는데 출력값은 144가 되었습니다. 소수점이하를 완전히 무시해버렸네요.

이유는 int 형으로 선언이 되어있기 때문입니다. 


매크로는 어떻게 출력될까요?



매크로는 입력한 값 그대로 계산을 해서 출력을 해줍니다.



뭐야? 인라인 함수는 쓸 곳이 없나?



인라인 함수도 템플릿이라는 것을 이용하면 매크로처럼 사용 할 수 있습니다.





template <typename T>를 적어주고 변수형태 대신에 T라고 적어주게 되면 어떤 값이 들어와도 그 값에 맞게 출력이 됩니다.




매크로는 #define 이라고 시작하는 것을 아실겁니다. 전처리기에 의해서 처리되죠. 


하지만 인라인 함수는 컴파일러에 의해서 처리됩니다. (#이 안붙어있어요~)

그래서 함수의 인라인화가 성능에 나쁜쪽으로 영향을 미치는 경우에는 무시해버리기도 하고, 필요한 경우에는 임의로 인라인 처리하기도 한다고 합니다.


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

using  (0) 2015.03.19
이름공간  (0) 2015.03.18
Default Value  (0) 2015.03.16
함수 오버로딩  (0) 2015.03.13
C언어와 다른 C++  (0) 2015.03.12