매크로 함수
- 전처리 단계에서 처리
- 함수처럼 인자를 설정할 수 있는 매크로
- 실제로는 함수가 아니라 단순 치환만 해준다
- 어떠한 타입 검사도 이루어지지 않기 때문에 문제가 발생할 수 있다
#define ADD(a,b) a+b
인라인 함수
- 컴파일 단계에서 처리
- 매크로 함수의 단점을 보완하기 위해 사용
- 일반적인 함수들을 위해 실행하는 타입 검사가 그대로 적용된다
inline int SUM(int a, int b) { return a+b; }
인라인 함수의 종류
- inline
- 컴파일러가 자동으로 비용/효율 분석을 통해 이득이 있을 경우에만 인라인 함수로 변환
- C++에서만 사용 가능
- _inline
- 컴파일러가 자동으로 비용/효율 분석을 통해 이득이 있을 경우에만 인라인 함수로 변환
- C와 C++ 모두 사용 가능
- __forceinline
- 컴파일러의 판단과 상관없이 무조건 인라인 함수로 변환
- C와 C++ 모두 사용 가능
장점과 단점
매크로 함수, 인라인 함수 둘 다 함수가 아닌 치환 기능이다
- 장점: 일반함수보다 실행 속도가 빠르다
- 단점: 코드가 복사되므로 실행 프로그램의 크기가 커진다