LuvSea

인라인(inline) 함수 본문

sTudy

인라인(inline) 함수

사랑海 2009. 8. 10. 14:16
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
다음과 같은 매크로 함수를 보자.
 
  1. #include <iostream.h>   
  2.   
  3. #define TEST(x) cout<<(x)<<endl;\   
  4.                          cout<<((x)+1)<<endl;\   
  5.                          cout<<((x)+2)<<endl   
  6.   
  7. int main()   
  8. {   
  9.     TEST(3);   
  10.   
  11.     return 0;   
  12. }  



\는 줄을 붙여서 만든다는 말이다. 그리고 변수마다 괄호를 친 이유는 지금의 소스에는 관계없지만 복잡해질경우 우선순위가 꼬일 수 있기 때문에 괄호를 친다.

매크로 함수는 C에서 많이 쓰였었지만 매크로 함수에는 심각한 문제점이 있는데 그것은 변수의 형을 검사하지 않는다는 것이다. 따라서 C++에서는 매크로 함수를 사용하지 않는 것을 권장하고 있다.

하지만 매크로 함수에도 장점이 있는데 일반 함수는 스택을 사용하지만 매크로는 그대로 코드가 삽입되는 것이므로 훨씬 빠를 수 있다. 따라서 이러한 매크로 함수의 장점을 대안하기 위해 C++은 인라인 함수라는 것을 제공한다.


 
  1. #include <iostream.h>   
  2.   
  3. //#define TEST(x) cout<<(x)<<endl;\   
  4. //                         cout<<((x)+1)<<endl;\   
  5. //                        cout<<((x)+2)<<endl   
  6.   
  7. inline void TEST(int x)   
  8. {   
  9.     cout<<x<<endl;   
  10.     cout<<x+1<<endl;   
  11.     cout<<x+2<<endl;   
  12. }   
  13.   
  14. int main()   
  15. {   
  16.     TEST(3);   
  17.   
  18.     return 0;   
  19. }  


inline 함수는 컴파일시 헤더파일에 포함되게 된다.
inline 함수는 보통 함수처럼 호출이 되면 메모리 주소로 점프하는 것이 아니라 매크로 함수처럼 소스코드가 통채로 삽입되게 된다.

'sTudy' 카테고리의 다른 글

[펌] 함수 포인터 및 클래스 멤버함수의 함수포인터화  (0) 2009.08.10
함수 const  (0) 2009.08.10
클래스 내 static 함수  (0) 2009.08.10
클래스내 static 멤버에 대하여  (0) 2009.08.10
strlwr 구현  (0) 2009.07.10
Comments