inline 키워드를 사용하여 함수를 inline화 시키게 되면, 함수에 정의부에 있는 내용을 함수를 호출한 부분에 대체 함으로써 성능을 향상 시킬수 있다. 하지만 함수의 정의부에 내용이 많을경우에는 별로 좋지 않은 방법이다.
나는 잘 모르고 있었지만, 우리가 inline 키워드를 이용해 inline화 하는것은 단지 컴파일러에게 '요청'하는 것일 뿐이며, 판단은 컴파일러가 한다고 한다. 이 말은, 컴파일러에 의해 '요청'한 부분이 무시될수도 있고, 성능향상을 위해 컴파일러가 자동으로 inline화를 수행하기도 한다는 소리다.( 똑똑하군..)
inline함수를 만들때 주의해야 할 점은, 반드시 "inline 함수의 선언과 정의를 헤더파일과 구현파일로 분리해서는 안된다!" 이다.. 실제로 내가 경험한 내용이지만, 헤더파일(*.h)에 인라인 함수의 선언부를 써놓고, 구현파일(*.cpp)에 정의를 했을경우에는 'LNK2019' 라는 녀석을 만나게 될것이다.
컴파일 단계에서 검출되는 error나 warning과 달리 LNK(링크오류)는 진단하기가 상당히 까다롭기 때문에, 특별히 주의해야 한다.
이 문제를 해결하기위해서는 앞서 얘기했던것처럼 "inline 함수의 선언과 정의를 분리하지말고, 헤더파일에 선언과 정의를 하면된다"
나는 잘 모르고 있었지만, 우리가 inline 키워드를 이용해 inline화 하는것은 단지 컴파일러에게 '요청'하는 것일 뿐이며, 판단은 컴파일러가 한다고 한다. 이 말은, 컴파일러에 의해 '요청'한 부분이 무시될수도 있고, 성능향상을 위해 컴파일러가 자동으로 inline화를 수행하기도 한다는 소리다.( 똑똑하군..)
inline함수를 만들때 주의해야 할 점은, 반드시 "inline 함수의 선언과 정의를 헤더파일과 구현파일로 분리해서는 안된다!" 이다.. 실제로 내가 경험한 내용이지만, 헤더파일(*.h)에 인라인 함수의 선언부를 써놓고, 구현파일(*.cpp)에 정의를 했을경우에는 'LNK2019' 라는 녀석을 만나게 될것이다.
컴파일 단계에서 검출되는 error나 warning과 달리 LNK(링크오류)는 진단하기가 상당히 까다롭기 때문에, 특별히 주의해야 한다.
이 문제를 해결하기위해서는 앞서 얘기했던것처럼 "inline 함수의 선언과 정의를 분리하지말고, 헤더파일에 선언과 정의를 하면된다"