[C++/Syntax] inline 함수

인라인 함수

인라인 함수는 #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함수가 사용 될 수 있다.

카테고리C++

글의 문제가 있다면 댓글을 달아 주세요.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.