(구) 자료/C

[1-4] inline 함수

뜐뜐뜐 2018. 8. 27. 15:54

1. inline 함수란?

- in(내부) + line(프로그램 코드 라인)
- 즉, 프로그램 코드라인 안으로 들어가 버린 함수

2. inline 함수는 왜 쓰는걸까

- 매크로 함수는 일반적인 함수에 비해 실행속도가 빠른 장점이 있지만, 정의하기가 어렵다는 단점이 있다.
  (매크로 함수란... define으로 처리해주는 함수를 의미한다. 괄호 하나 까딱 잘못하면 값이 망가진다.

- 이처럼 정의하기 어려운 단점을 보완하고, 장점은 그대로 가져가는 것이 바로 inline 함수이다.


3. inline 함수의 특징?

- 매크로(define)를 이용한 함수의 인라인화는 전처리기에 의해서 처리되지만, inline을 이용한 함수의 인라인화는 컴파일러에 의해 처리가 됨.

- 따라서 컴파일러가 inline 키워드가 붙은 함수를 컴파일 하면서, inline이 오히려 성능 저하를 야기한다고 판단하는 경우, 무시해버린다.

- 반대로, 인라인화가 필요하다고 판단되는 함수에는 임의로 인라인 처리를 하기도 한다.


4. inline vs define

- 매크로 함수(define)은 자료형을 굳이 지정해주지 않아도 알아서 한다는 장점이 있다.

- 그러나, inline의 경우 함수 호출 시, 데이터 손실이 발생할 수도 있다. (추후에, 템플릿 키워드를 통해 해결 가능)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
 
template <typename T>
inline T SQUARE(T x){
    return x*x;
}
 
int main(){
 
    cout<<SQUARE(5.5)<<endl;
    cout<<SQUARE(12)<<endl;
 
    return 0;
}
cs