프로그래밍

[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_;
}



반응형