인라인 함수와 매크로 함수 모두 (실행 파일의) 크기에 불리하고 속도에 유리하다는 특징을 가지고 있다.
하지만 인라인 함수는 이에 더해 추가적인 이점을 가진다.
- 타입을 확인하기에 산술 변환이 잘 처리된다.
- 지역 변수를 사용할 수 있다.
매크로 함수의 경우 전처리기능을 이용한 '단순 치환'의 역할만을 하기 때문이다. 컴파일 과정에서 인라인 함수와 달리 매크로 함수는 데이터 타입에 관한 문제를 발생할 수 없다.
이러한 점으로 미루어 보아 매크로 함수보다 컴파일러가 처리하는 인라인 함수가 더욱 상위호환의 역할을 할 수 있다고 볼 수 있다. 실제로 C++에서도 매크로 함수보다 인라인 함수 사용을 권장한다.
다만 아무리 inline 키워드를 붙여 인라인 함수로 선언하려 해도 불가능한 경우가 있다.
실제 인라인 함수가 될 것인가 아닌가는 컴파일러가 결정하기 때문이다.
인라인 함수화가 불가능한 케이스들은 다음과 같다 (출처 : C++ 트레이닝 , 김상형)
- 재귀호출함수
- 포인터로 지목된 함수
- 함수의 길이가 너무 긴 함수
반대로 인라인 함수로 선언하지 않아도 자동으로 인라인화 되는 경우도 있다.
최신 컴파일러의 경우 이러한 경우를 보다 정확하게 선별하기 때문에 인라인 키워드를 엄격히 준수할 필요성은 적다.
'Language > C++' 카테고리의 다른 글
vector 사용 시 []연산자와 at() 멤버 함수의 차이 (0) | 2021.01.21 |
---|---|
함수 객체와 그 활용성에 관하여 (0) | 2021.01.06 |
연산자 오버로딩과 주의할 점 (0) | 2020.12.23 |
레퍼런스(Reference)의 특징과 활용법 (0) | 2020.11.15 |
C++의 개선된 문법 (0) | 2020.11.10 |