[C++] macro 함수와 inline 함수
Updated:
개요
- 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