프로그래밍/C++
C++ - 인라인 함수(inline function)
꿈꾸는 사람_Anthony
2021. 6. 30. 19:35
반응형
보다 함수처럼 정의할 수 있는 메크로.
메크로의 실행속도가 빠르다는 장정과, 함수의 정의가 편리하다는 장점이 모두 포함되어있다.
#include<iostream>
inline int squre(T x) {
return x * x;
}
void main() {
std::cout << squre(5) << std::endl;
//std::cout << squre(5.5) << std::endl; // 데이터 손실
std::cout << squre(12) << std::endl;
}
- 메크로는 전처리기에 의해 처리되는 반면, 인라인 함수는 컴파일러에게 처리된다.
- 따라서 인라인 함수가 일반함수보다 성능적 측면에서 떨어진다고 판단한다면, 이 inline키워드를 무시해버리기도한다.(최적화의 일환일까?)
- 인라인 함수는 매개자료형, 결과자료형이 상관없는 매크로와 다르게, 매개변수의 자료형과 출력 자료형이 정해져있다. 따라서 데이터 손실이 발생하기도 한다.
- template(템플릿)을 이용하면 자료형에 의존적이지 않은 함수를 만들 수 있다. => 인라인에도 적용가능하다.
#include<iostream> template <typename T> inline T squre(T x) { return x * x; } void main() { std::cout << squre(5) << std::endl; std::cout << squre(5.5) << std::endl; //에러 생기지 않음. std::cout << squre(12) << std::endl; }
- template(템플릿)을 이용하면 자료형에 의존적이지 않은 함수를 만들 수 있다. => 인라인에도 적용가능하다.
반응형