C언어의 inline 키워드

C언어로 함수 좀 짜다보면 inline이라는 키워드를 써서 만들어 보여주면 “이건 뭐임?”이라면서 신기하게 쳐다보는 사람이 있어서 혹시나 해서 올려봄…

#define같은 선행 처리자들은 매크로가 pre-processor에서 단순 치환되는 형태이다. 그러나, inline은 컴파일러가 함수 인수등의 type을 체크해 보고 안전하다고 판단되는 경우에 처리를 해준다.

그냥 보이는 결과적으로는 #define이나 inline이나 큰 차이는 없어보임. 그러나 그 차이는 요즘은 문제가 된다.

기본적으로, 함수를 이용하면 호출과 반환으로 인한 메모리 할당 등에 대해서 오버헤드가 발생한다. 그러나, 근래에 코드 작성하는 요령에 권장되는 사항들은 짦은 길이의 함수를 만들어서 가독성 및 오류가 적은 수준의 단위로 만들어서 구현하는 것이 추세이다.

이런 면에서, 짧은 길이의 C함수를 이용하는 것은 장점보다 비효율적인 면이 많이 생긴다. 이러한 경우에 매크로 함수를 이용하는 것이 바람직하다. 매크로 함수를 이용하면 전처리기에 의해 해당 부분이 정의된 내용으로 대체되어 함수 호출 과정이 사라지게 된다. 따라서 함수 이용으로 인한 오버헤드가 발생하지 않는다.

반면, 매크로 함수의 정의 부분이 길면 프로그램의 크기가 커지게 되는 문제점이 있다. 이 부분은 의도치 않게 커지는 부분이 된다. 게다가 매크로 함ㅁ수를 정의하는 것은 일반적인 함수를 정의하는 것보다는 구현이 까다로운 점도 있다.

그래서 일반적인 함수를 정의하는 것처럼 쉽게 구현할 수 있고 매크로 함수처럼 동작하는 기능을 가진 함수가 있는데 이걸 C에서 이용하는 inline 함수이다.

inline 키워드는 inline 함수를 만들기 위한 키워드이다.  C언어 책에도 나와있는 것이라서 솔직히 다 알고있을 줄 알았는데, C를 그냥 함수랑 포인터까지만 배우고 나서 OOP 한답시고 바로 자바로 넘어가서 더 이상 깊게 안보게 되면 잘 모르는 경우가 많은 듯 해서 적어봤다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.