#define
전처리 명령어. 값을 치환해서 적용.
속도가 빠르다. 자료형에 독립적이다. 함수 호출 시 요구되는 스택 할당 필요가 없다.
복잡한 정의를 할 때 사용하기엔 좋지 않다.
디버깅이 불편해서 오류가 발생하면 고치기 힘들다.
#define SQUARE(x) ((x) * (x))
inline 함수
함수와 매크로의 중간쯤 역할.
컴파일러에 의해 코드가 생성되서 바이너리 구역에 위치하게 됨. 많이 쓰면 메모리 잡아 먹는다.
성능 면에서 문제가 된다고 판단되면 컴파일러가 inline 을 무시할 수 있다. 반대로 inline 이 없어도 컴파일러 판단 하에 inline 함수로 만들 수도 있다.
길이가 긴 함수에 사용하는 것은 좋지 않다.
자료형에 독립적으로 사용하려면 template 사용.
template <typename T>
inline T SQUARE(T x) {
return x * x;
}
'#DevStudy > C++' 카테고리의 다른 글
C++ STL - 순차컨테이너 (0) | 2016.04.19 |
---|---|
C++ 11 - 스마트 포인터 (0) | 2016.04.08 |
C++ 11 - chrono 시간 측정 (0) | 2016.04.06 |
댓글