Notice
Recent Posts
Recent Comments
LuvSea
인라인(inline) 함수 본문
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
다음과 같은 매크로 함수를 보자.
\는 줄을 붙여서 만든다는 말이다. 그리고 변수마다 괄호를 친 이유는 지금의 소스에는 관계없지만 복잡해질경우 우선순위가 꼬일 수 있기 때문에 괄호를 친다.
매크로 함수는 C에서 많이 쓰였었지만 매크로 함수에는 심각한 문제점이 있는데 그것은 변수의 형을 검사하지 않는다는 것이다. 따라서 C++에서는 매크로 함수를 사용하지 않는 것을 권장하고 있다.
하지만 매크로 함수에도 장점이 있는데 일반 함수는 스택을 사용하지만 매크로는 그대로 코드가 삽입되는 것이므로 훨씬 빠를 수 있다. 따라서 이러한 매크로 함수의 장점을 대안하기 위해 C++은 인라인 함수라는 것을 제공한다.
inline 함수는 컴파일시 헤더파일에 포함되게 된다.
inline 함수는 보통 함수처럼 호출이 되면 메모리 주소로 점프하는 것이 아니라 매크로 함수처럼 소스코드가 통채로 삽입되게 된다.
- #include <iostream.h>
- #define TEST(x) cout<<(x)<<endl;\
- cout<<((x)+1)<<endl;\
- cout<<((x)+2)<<endl
- int main()
- {
- TEST(3);
- return 0;
- }
\는 줄을 붙여서 만든다는 말이다. 그리고 변수마다 괄호를 친 이유는 지금의 소스에는 관계없지만 복잡해질경우 우선순위가 꼬일 수 있기 때문에 괄호를 친다.
매크로 함수는 C에서 많이 쓰였었지만 매크로 함수에는 심각한 문제점이 있는데 그것은 변수의 형을 검사하지 않는다는 것이다. 따라서 C++에서는 매크로 함수를 사용하지 않는 것을 권장하고 있다.
하지만 매크로 함수에도 장점이 있는데 일반 함수는 스택을 사용하지만 매크로는 그대로 코드가 삽입되는 것이므로 훨씬 빠를 수 있다. 따라서 이러한 매크로 함수의 장점을 대안하기 위해 C++은 인라인 함수라는 것을 제공한다.
- #include <iostream.h>
- //#define TEST(x) cout<<(x)<<endl;\
- // cout<<((x)+1)<<endl;\
- // cout<<((x)+2)<<endl
- inline void TEST(int x)
- {
- cout<<x<<endl;
- cout<<x+1<<endl;
- cout<<x+2<<endl;
- }
- int main()
- {
- TEST(3);
- return 0;
- }
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