본문 바로가기
공부/개발노트

[C/C++] 인라인(inline) 함수

반응형

인라인 함수 들어가기에 앞서 매크로 함수를 이해를 해야 쉽게 접근이 가능하다.

 

사이트 바로가기 버튼을 눌러 강의 페이지로 넘어가자

 

 


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
inline int SQUARE(int x)
{
    return x*x;
int main()
{
    cout << SQUARE(5<< endl;
    cout << SQUARE(12<< endl;
    
    return 0;
}
cs

 

실행 결과

 

 

인라인 함수의 크나큰 단점

 

매크로 함수에는 자료형이 달라도 데이터 손실이 발생하지 않지만 인라인 함수는 자료형을 제시하고 구현하기 때문에 int형의 인라인함수에서 double형을 인자 전달하게되면 소수점 이하자리는 모두 버려지게되므로 데이터 손실이 발생하게된다.

 

정리하자면 아래와 같은 인라인 함수는 int형 기반으로된 소스이다.

1
2
3
4
inline int SQUARE(int x)
{
    return x*x;
cs

 

여기서 double형인 3.14를 주었다. 그럼 .14가 손실된 3이 전달되게 되는 것이다.

 

그래서 나온 것이 template 이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
template <typename T>
inline T SQUARE(T x)
{
    return x*x;
}
 
int main(void)
{
    cout << SQUARE(5.5<< endl;
    cout << SQUARE(12<< endl;
    return 0;
}
cs
반응형