posted by 구로보루 2017. 9. 2. 14:29

 inline은 함수의 구현부분이 간결할 때 해당 함수가 호출되는 부분을 호출이 아닌 코드가 그대로 옮겨지도록 한다. 이를 통해 함수 호출에 대한 비용소모를 줄여주어 더욱 효율적으로 실행되게 한다.

 

 class의 멤버함수를 inline으로 지정해야 할 경우 class 내부에서 함수를 정의하면 해당 코드의 비용에 따라 자동으로 inline을 추가해준다. (for, while 같은 반복문은 inline으로 지정되지 않는다!) 반면 외부에서 지정할 경우는 inline을 명시해 주어야 한다.

 

 

 이 글을 쓰다가 작년에 누군가가 class 선언과 정의로 파일을 나누었을 때 inline이 적용되지 않는다고 질문을 한게 기억났다. 그때는 그냥 그런가보다 했다가 이번에 생각나서 찾아보니 inline은 컴파일에 의하여 동작한다. 그런데 컴파일이 파일단위로 실행되기 때문에 선언과 정의로 파일을 분활하면 오류가 발생한다. 그러므로 inline을 사용하려면 반드시 같은 파일에서 정의해야 한다.

 

 

 inline과 관련된 키워드로 __inline과 __forceinline이 있는데 __inline의 경우는 inline과 동일하게 작동하여 컴파일러가 효율성을 분석해 자동으로 동작하게 한다. 반면 __forceinline의 경우는 컴파일러의 분석을 무시하고 무조건 inline을 실행하도록 하는 키워드이다.

'공부 > C++(STL)' 카테고리의 다른 글

반복자 연산  (0) 2018.01.26
accumulate 함수  (0) 2018.01.24
static 멤버  (0) 2017.09.05
const  (0) 2017.09.05
private, protected, public  (0) 2017.09.02