[C++] 인라인(inline) 함수
카테고리: Cpp
태그: Keyword
이 글은 C++ 인라인(inline) 함수를 공부하고 정리한 글입니다
인라인 함수
- 매크로와 매우 비슷한 개념으로 복붙을 해준다
- 함수호출에 필요한 오버헤드를 줄일수 있다
- 매크로와 다른점
- 매크로는 디버깅하기 힘듬
- 콜스택에 함수이름이 안 보임
- 중단점도 설정 불가능
- 매크로는 범위를 준수하지 않음
- 매크로는 디버깅하기 힘듬
- 매크로와 다른점
namespace name1
{
class Animal
{
public :
inline int GetAge();
private:
int mAge;
};
int Animal::GetAge()
{
return mAge;
}
}
- inline 키워드는 힌트일 뿐
- 실제로는 인라인 안될 수도 있음
- 컴파일러가 자기 맘대로 아무 함수나 인라인 할 수도 있음
- 인라인 함수 구현이 헤더 파일에 위치해야함
- 복붙을 하려면 컴파일러가 그 구현체를 볼 수 있어야 하기때문에
- 각 cpp 파일은 따로 컴파일 됨
- 따라서 b.h를 인클루드하는 a.cpp파일을 컴파일 할 때, 컴파일러는 b.cpp에 뭐가 들어 있는지 모른다
사용할 때 주의점
- 간단한 함수에 적합
- 특히 getter나 setter
- 실행파일의 크기가 증가하기가 쉬움
- 동일한 코드를 여러 번 복붙하니까
- 남용하지 말 것
- 실행파일이 작을수록 CPU 캐시하고 잘 작동 -> 속도가 빨라질 수 있음
참조
💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸
댓글 남기기