인라인 함수
인라인 함수는 #define (매크로 함수)의 확장판 같은 느낌이다.
즉, 컴파일 중에 해당 내용이 처리 된다는 뜻이다.
하지만 define 보다 훨씬 “함수”처럼 사용할 수 있다는 점이 다르다.
매크로 함수
매크로 함수는 #define SQUARE(x) ((x)*(x))
와 같이 쓰이며, 컴파일 되면서 SQUARE(5)
가 ((5)*(5))
바뀌는 방식으로 사용된다.
하지만 매크로 함수는 정의가 어려우며, 복잡한 함수를 매크로의 형태로 정의하는 것은 한계가 있다.
인라인 함수
이를 해결하기 위해 나온 것이 바로 인라인 함수
inline int SQUARE(int x){return x*x;}
처럼 사용된다.
int SQUARE( int x)
자료형을 선언하고, return x*x
를 통해 반환을 한다.
일반 함수의 사용방법과 유사하다.
사용방법 또한 SQUARE(5)
로 사용하면 된다.
다만 차이점은 매크로 함수는 SQUARE(0.5)
를 넣게 되면 0.5의 제곱인 0.25가 나오지만,
inline함수의 경우 double형으로 선언된 SQUARE(double x) 인라인함수가 없다면,
0.5가 int형으로 변환되며 0으로 바뀌게 되고 결과 값은 0의 제곱인 0이 나오게된다.
++ 사용시 주의
인라인 함수는 반드시 파일안에 선언되있어야 사용이가능하다.
인라인 함수또한 컴파일시 적용되기에 이는 어쩌면 당연한 것이다.
즉, header.h에 inline함수가 선언 되있다면,
#include “header.h” 이렇게 선언된 파일에서는 사용할 수 없다는 뜻이다.
반드시 header.h파일 안에서만 inline함수가 사용 될 수 있다.