Updated:

less than 1 minute read

개요

  • 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