-
[c++] inline 함수 사용의 경우프로그래밍 2014. 7. 2. 14:57반응형
inline 키워드는 일반 함수 코드가 매크로와 비슷하게 동작하도록 만들며
컴파일 시에 함수 링크가 방식이 아닌 내부 코드를 직접 붙이는 처리를 한다.(컴파일러가 판단하여 효율성이 떨어진다고 생각할 시에는 inline 시키지 않기도 한다.)
따라서, inline 함수의 경우 여기저기서 자주 호출될 시에는 프로그램 코드 자체가 비대해지는 경우가 생긴다.
따라서 매우 작은 단위의 함수가 아니라면 여러곳에서 빈번히 호출되는 함수의 사용에는 적합하지 않다.
inline을 어떻게 활용하면 좋을까 생각을 했는데
c++ 환경에서는 함수 오버로딩이 가능하므로 다음과 같은 상황을 처리하는 코드의 작성이 많다.
void put(int val);
void put(int a, int b);
void put(int a, int b, int c);
void put(array<int> arr);
이때, 가장 기본이 되는 일반적 함수를 만들고, 나머지는 그 함수를 래핑하는 함수를 inline 함수로 만들면 좋을 듯 싶다.
void put(array arr); // 기초적 함수
inline void put(int val)
{
put(array{val, 0, 0});
}
inline void put(int a, int b)
{
put(array{a, b, 0});
}
inline void put(int a, int b, int c)
{
put(array{a, b, c});
}
또한 값을 얻고 수정하는 작은 크기의 함수에도 사용한다.
inline void socket(socket_t& _socket)
{
socket_ = _socket;
}
inline socket_t& socket() const
{
return socket_;
}반응형'프로그래밍' 카테고리의 다른 글
[c++] c++11에 추가된 표준 뮤텍스(mutex) (0) 2014.07.14 [c++] typedef template<typename T> 템플릿 자료형의 이름 재정의 방법 (0) 2014.07.02 zl/memory_stream 네이밍 (0) 2014.07.02 [C++] 모든 컨테이너를 배열처럼 접근? std::advance() (0) 2014.05.24 CPU에 따른, 프로그램에서의 효율적 스레드의 수 (2) 2014.05.23