하루의 쉼터

[BasicGrammar] Inline Function 본문

프로그래밍/C++

[BasicGrammar] Inline Function

Changun An 2023. 4. 18. 09:31
반응형

| 인라인 함수는 함수 호출을 하러 메모리 참조를 하는 것이 아닌 함수 본문이 직접 코드레벨에서 실행되어 호출하지 않고도 코드 블록이 실행되는 형태.

인라인 함수를 얘기할때 나오는 것 중에 하나는 매크로 함수이다.

#include<iostream>
#define SQU(X) ((X)*(X))

int main(){
		std::cout << SQU(3 + 2) << std::endl;
        return 0;
}

매크로 함수는 전처리기에 의해 처리되는 단순 텍스트 치환이기 때문에, 컴파일러가 실제로 함수 코드를 생성하는 것이 아니라 단순히 텍스트 치환으로 처리가 된다.

매크로 함수는 매크로로 인해 발생하는 일반적인 문제점들인 가독성 저하, 디버깅 어려움, 네임스페이스 충돌 등의 단점이 있다.

이러한 단점을 해결하기 위해 보완되어 나온 것이 인라인 함수이다.

무조건 좋은가?

함수 호출을 한다는 것은 메모리의 주소로 가서 실행하고 돌아오는 과정을 거치기 때문에 이러한 과정에서 실행 시간이 소비된다. 인라인 함수를 사용하면 이러한 점을 줄일 수 있으나 자주 호출함수의 경우에는 코드 영역이 증가 될 수 있으므로 잘고려해야한다.

형태 

inline 반환형 함수명(파라미터);

inline int add(int a, int b) {
  return a + b;
}
inline double square(double x) {
	return x * x;
}

또는 

int main(){
	double a = 2.0, b = 3.0;
	double c = 0.0;
	{
		std::cout << " c1 : " << c << std::endl;
		double x = a, y = b;
		c = x - y;
		std::cout << c << std::endl;
    	}
	return 0;
}

이러한 형태로 실행된다.

반응형
Comments