728x90
인라인(inline) 함수는 무엇일까
inline함수는 in line, 프로그램 코드 라인 안에 있는 함수라는 뜻이다. 아래 함수를 한번 보자.
#include<iostream>
using namespace std;
inline int ADD(int a)
{
return a+1;
}
int main()
{
cout << ADD(3) << endl;
return 0;
}
이렇게 설정해두면 매크로함수의 경우에는 전처리기에서 처리되지만 inline함수는 컴파일러에서 처리한다.
따라서 전처리기를 사용할때는 모두 적용이 되는 반면, inline함수를 이용해서 컴파일러에서 처리하는 경우에는 inline화 해서 코드에 넣었을 때 성능에 불리하다고 판단하면 inline 키워드를 무시해버리기도 한다. 또는 인라인 선언 되어있지 않지만 인라인을 했을때 유리하다고 판단하는 경우에는 임의로 inline화 시키기도 한다.
위에서 보이는 인라인 함수에는 단점이 있다. 바로
ADD(5.05) // 1 + 5.05 = 6.05? but 6
이렇게 자료형이 다르게 들어오는 경우 데이터 손실이 발생할 수 있다는 점이다. 매크로에서는 발생하지 않는 단점이기도 하다.
하지만 이런 경우 C++에서는 Template을 통해 해결할 수 있다.
#include<iostream>
using namespace std;
template <typename T>
inline T ADD(T a)
{
return a+1;
}
int main()
{
cout << ADD(5.05) << endl;
return 0;
}
위처럼 코드 실행시 데이터 손실이 발생하지 않음을 알 수 있다.
728x90
'Computer Science > C & C++' 카테고리의 다른 글
[C++] 매개변수 디폴트 값 (Default Value) (0) | 2021.07.06 |
---|---|
[C++] 함수 오버로딩 (Function Overloading) (0) | 2021.07.06 |
댓글