inline 인라인 최적화에 대해서...

freezm7의 이미지

매크로 대신 인라인 함수를 사용하는게 여러모로 좋다고 알고 있는데요.

#define ARGB32(a, r, g, b) ((a << 24) | (r << 16) | (g << 8) | b)

매크로를 똑같은 인라인 함수로 만드려면,

inline unsigned long argb32(char a, char r, char g, char b)
{
return ((a << 24) | (r << 16) | (g << 8) | b);
}

이렇게 하면 되나요?

왠지 char 대신에 const char& 타입을 써야 될 것 같아서요...

C++ 최적화에 대해서 잘 아시는 분 설명 부탁드립니다.

cedar의 이미지

타입 정의를 미리 알 수 없거나, 타입에 상관없이 사용하려면 템플릿을 사용하면 됩니다.

template <typename param_type, typename ret_type>
inline ret_type argb32(param_type a, param_type r, param_type g, param_type b) 
{ 
    return ( a << 24 ) | ( r << 16 ) | ( g << 8 ) | b; 
}

C++ 최적화에 대해서는 답글로 적기에는 너무 방대합니다.
Efficient C++(번역서 있음)이란 책을 참고하세요.