카테고리 없음
[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같이 단위가 작고 느린 녀석들에게는 아주 가끔 필요할 주로 생각된다. 한번도 써 본적은 없지만 말이다.