-
C++ - 인라인 함수(inline function)프로그래밍/C++ 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(템플릿)을 이용하면 자료형에 의존적이지 않은 함수를 만들 수 있다. => 인라인에도 적용가능하다.
반응형'프로그래밍 > C++' 카테고리의 다른 글
C++ - 범위지정연산자(Scope Resolution Operator) (0) 2021.07.01 C++ - 매개변수의 default값과 함수 오버로드(overload) (0) 2021.06.29 C++ - 함수 선언부에서의 default값에 대한 고찰 (0) 2021.06.29 - 메크로는 전처리기에 의해 처리되는 반면, 인라인 함수는 컴파일러에게 처리된다.