최대 1 분 소요

개요

  • 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;
    }
  • 실행 결과
    9
    7
    16
    ------
    9
    16