개요
- macro 함수
- 단순 치환
- 모든 인자에 괄호를 해주지 않으면 의도하지 않은 동작 발생
- 디버깅이 어려움
- inline 함수
- macro 함수의 단점을 보완한 함수
- 단순 치환이 아닌 일반 함수처럼 치환
- inline 키워드를 사용하여 일반 함수처럼 사용
- 컴파일러에 따라 inline 선언을 하지 않아도 inline화하는 것이 효율적이면 inline화
- 컴파일러에 따라 inline 선언이 되어있어도 inline화하는 것이 비효율적이면 inline화하지 않음
예제
- 코드
#include <cstdlib>
#include <iostream>
using namespace std;
#define square1(x) x *x
inline int square2(int i) { return i * i; }
int main() {
cout << square1(3) << endl;
cout << square1(1 + 3) << endl;
cout << square1((1 + 3)) << endl;
cout << "------" << endl;
cout << square2(3) << endl;
cout << square2(1 + 3) << endl;
return EXIT_SUCCESS;
}
- 실행 결과