728x90

이번에 "게임 엔진 아키텍처" 라는 책을 읽으면서 좋은 내용이 있어서 정리해 놓는다.


나의 경우 inline 함수를 최적화를 생각하며 자주 사용하고 있다.

하지만 자세한 내용은 몰랐던 것 같다. ㅎㅎ


inline 함수가 다른 cpp 에서도 사용하기 위해서는 반드시 .h에 정의되어 있어야만 한다.

왜냐하면, 컴파일러가 inline 함수를 처리하려면 컴파일러가 함수의 정의 부분을 볼 수 있어야하는데, .cpp에 있다면 볼 수가 컴파일때에는 볼 수가 없기 때문이다.


// foo.h

inline int max(int a, int b)

{

return (a > b) ? a : b;

}


위의 경우 아주 올바른 inline 함수이다. 왜냐하면 컴파일러가 볼 수있다.


// 이 함수는 inline으로 정의하였지만, inline으로 처리되지 않는다.

// 왜냐하면 컴파일러가 함수의 구현을 볼 수 없기 때문이다.

// foo.h 

inline int max(int a, int b);


// foo.cpp

inline int max(int a, int b)

{

return (a > b) ? a : b;

}



이 내용은 전혀 몰랐던 것이기 때문에 공유한다.


728x90

+ Recent posts