[C++] Inline 함수

dd_ddong·2022년 7월 7일
0

c++

목록 보기
3/38

매크로

c에서는 컴파일러가 컴파일하기 전 전처리기에서 처리해주는 매크로기능이 있다

#define PI 3.14 : 매크로 상수
#define SQUARE(x) ((x)*(x)) : 매크로 함수

컴파일 전 코드에 있는 PI, SQUARE를 각각 3.14, ((x) *(x))로 치환해주는 기능이다.

장점 : 함수 호출시 스택할당이 없어지므로 성능 향상
단점 : 복잡한 함수형식 선언 불가

치환해 주는 걸 'inline화 한다' 라고도 한다.

c++에서의 매크로

c++에서 매크로 함수를 정의하는 방법은

inline int SPUARE(int x){
	return x*x;
}

일반 함수를 선언하는 것에서 앞에 inline키워드를 추가해주면 된다.

일반 매크로 함수와 inline함수의 차이점은

  1. inline 함수는 전처리기가 아닌 컴파일러가 처리한다.
  2. 일반 함수와 선언부분이 같으므로 복잡한 함수를 inline함수로 선언 가능하다.
  3. 번거롭게 ()를 많이 칠 필요없다.

여기서 컴파일러가 처리한다는 점 덕분에 inline으로 선언한 함수를 inline화 안할 수도 있고, inline으로 선언하지 않은 함수를 inline화 할 수 있다.
모두 컴파일러가 알아서 해준다.

inline 함수의 단점

inline 함수의 경우 일반 함수처럼 반환형식이나 매개변수의 형식을 지정해주기 때문에 자료형이 의존적이다.

따라서 templete을 이용해 자료형에 의존적이지 않은 inline 함수를 선언하는 경우가 많다.

templete <typename T>
inline T SQUARE(T x){
	return x * x;
}

이렇게 선언하면 자료형에 의존적이지 않게 inline함수를 선언할 수 있다.

0개의 댓글