본문 바로가기
#DevStudy/C++

define 과 inline 함수

by 검은_백조 2016. 8. 9.

#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

댓글