.inl 파일을 헤더파일 하단에 붙일때 inline 은 선언부에 써도 되고 안써도 되지만 정의부에는 inline 키워드를 써야한다

 

 

이하 정리잘된 포스트!!!!!

 


 

 

http://dev.log.mumbi.net/390

 

[C++] inline keyword 와 inl file. ( *.inl )

Language/C++ | 2009/08/24 14:21 | Posted by 임준환( 멈비 )
inline 함수는 함수를 호출하는게 아니라 마치 #define macro 와 같이 치환되어 함수 호출에 대한 overhead 를 줄일 수 있어 좀 더 빠른 처리가 가능하다. 

하지만 inline 함수는 사용자가 지정한다고 해서 inline 함수가 되는 것이 아니라 사용자가 compiler 에게 inline 함수로 사용하겠다는 신청을 하면 compiler 가 inline 함수의 조건에 맞으면 inline 함수로 처리하고 아니면 일반 함수로 처리하게 된다. 

inline 함수의 조건이란 7 line 이하이어야 하고, 재귀 호출과 같은 반복되는 함수는 제외된다.


함수를 inline 함수로 신청하기 위해서는 
  1. 함수의 선언과 동시에 정의를 한다. ( inline keyword 를 붙이지 않아도 된다. )
  2. 함수의 선언 앞에 inline keyword 를 붙인다. 단, 함수의 정의는 선언부와 같은 file 안에 있어야 한다.

 
그러므로 inline 함수는 cpp file ( *.cpp ) 에 정의할 수 없는 것이다. 


위의 사항으로 비추어 보면 선언과 정의가 같은 file 안에 있어야 하므로 선언과 정의를 분리하기 어려워진다.

그래서 등장한 기법이 inl file ( *.inl ) 이다.

inl file 에는 inline 함수의 정의부를 적어 놓고 선언부가 있는 header file ( *.h ) 의 끝에서 #include 로 inl file 을 포함해 주면 된다.

단, 여기서 주의할 점은 선언과 동시에 정의를 했을 경우에는 inline keyword 를 붙이지 않아도 되지만, 그렇지 않으므로 꼭 inline keyword 를 붙여야 한다. 


inl file 이 또 하나 유용한 점이 있는데 바로 template 을 작성할 때이다.

template 또한 inline 함수와 마찬가지로 선언과 정의가 같은 file 에 있어야 한다.

그러므로 template 의 선언은 header file 에 작성하고, 정의는 inl file 에 하면 선언과 정의를 분리할 수 있게 된다.

반응형

+ Recent posts