카테고리 없음

[C언어] 인라인(inline) 함수

s뽈록이s 2013. 7. 2. 14:02
inline int randfunc(int n)
{
	return rand() % n;
}
 
void main()
{
	int i, j, k;

	i = randfunc(10);
	j = randfunc(100);
	k = randfunc(50);
	printf("난수 = %d, %d, %d\n", i, j, k);
}

프로그램 실행화면


프로그램을 실행하면 모든 데이터들이 하드 디스크에서 메모리로 옮겨간다. 그래서 cpu가 이를 처리한다. cpu가 프로그램을 실행할 때 메모리는 스택의 구조를 가진다.


바닥에 동전을 쌓아 올라간다. 그러면 가장 최근에 올려 놓았던 동전을 꺼내야 그 전에 올려 두었던 동전을 집을 수 있다. 이와 마찬가지로 함수들도 스택에 쌓이게 된다.


스택은 운영체제 시간에 자세히 배우도록 하고 아무튼 함수를 호출하면 메모리에 여러 값들이 저장된다. 그러면 그 만큼 프로그램 실행속도가 떨어지는 것이다.


위와 같은 프로그램에서 randfunc()함수를 인라인(inline)함수로 만들어 버림으로써 함수를 호출하는 하는 것이 아니라 inline(10); 이 녀석이 rand() % n;으로 치환되는 개념이다.


그래서 더 빠르게 프로그램을 실행할 수 있다. 요즘은 워낙 하드웨어가 좋아져서 이런 사소한 것들은 신경 쓰지 않아도 될 것 같다.


다만 마이크로프로세서 AVR, PIC, 8051같이 단위가 작고 느린 녀석들에게는 아주 가끔 필요할 주로 생각된다. 한번도 써 본적은 없지만 말이다.