프로그래밍/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;
      }

 

반응형