알음알음-IT/개발_기초_코딩_C++

C++ 공부하기 - 3.인라인 함수

구구닥스 2020. 2. 4. 14:27

오늘 배워볼 내용은 인라인(inline)함수 대해서 공부하겠습니다.

(여러분이 이미 C언어를 어느정도 익히셨겠지만 만약 까먹으셧다면 다시 보고오시거나 제 블로그 C언어 공부하기에서 보고오셔도 됩니다. 

매크로 함수 바로가기

 

C언어에서 매크로함수에 대해 배우셨을 꺼에요.           

매크로 함수의 장단점을 비교해보겠습니다.

장점 

단점 

전처리기를 통해 실행 속도가 빠르다 

복잡한 함수를 매크로 함수로 정의하기 어렵다 

코드의 가독성이 높아진다

 증감 연산자 사용시 중첩된 결과로 잘못된 결과가 나온다

 코드의 수정이 용이하다

" " 안의 내용은 적용이 안되서 #(문자열 변환 연산자)를 사용해야 한다 

 

 

이런 매크로 함수가 전처리 과정을 거치면 함수의 몸체 부분이 함수의 호출문을 대신하게 된다.

위와 같은 형식으로 대체하게 되고 이렇게 완전히 대체한 경우를 함수가 인라인화 되었다라고 합니다.

우리가 C++에서 매크로 함수 대신 인라인 함수를 쓰는 이유는 우선 매크로 함수는 매개변수를 일반 함수와 다르게 처리하게 때문입니다.

그렇기 때문에 단점인 증감 연산자나 연산 우선순위가 일반 함수와 달라지는 것이지요 그래서 인라인 함수를 쓰는 것입니다.

호출 속도도 빠르고 매크로의 단점도 없기 때문에 쓰지만 단 복잡한 함수를 인라인화 해서 쓰는것은 메모리를 효율적으로 쓰지 못하기 때문에 유의해야 합니다.

 

인라인 함수는 inline 이라는 키워드로 선언을 합니다.

이런식으로 사용합니다. 보시는 것처럼 자료형을 써야 합니다. 그렇기 때문에 매크로의 장접이자 단점인

매개변수의 자료형에 의존적이지 않은 점이 사라졌습니다. 오버로딩을 써서 해결할 수 있지만 그렇게 되면 너무 여러 개의 함수를 써야 하니

오히려 번거롭게 되어버립니다. 하지만 템플릿을 쓰면 매크로 함수와 마찬가지로 자료형에 의존적이지 않게 만들 수 있으니

걱정 안하셔도 됩니다.

 

그리고 컴파일러가 임의로 일부 함수를 인라인화 해서 처리하는 경우도 있고 인라인화가 오히려 독이 된다면 인라인 키워드를 무시하기도 한다는 점 추가로 알아두시면 좋을 것 같네요

 

지금까지 인라인 함수에 대해서 공부해봤습니다.~