#define randfunc(n) (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); }
프로그램 실행화면
#define 으로 매크로함수를 만들 수 있다. inline함수를 예로 들면서 함수를 자주 호출하게 되면 그만큼 메모리에 값을 자주 써야하므로 실행시간이 길어진다고 한적이 있다.
이와 마찬가지로 매크로 함수는 함수 호출하는 횟수를 줄여주어 프로그램 실행속도를 빠르게 해주는 녀석이다. 그렇다면 inline함수와 비슷한 이녀석은 inline함수와 어떤 차이점이 있을까?
우선 #define의 단점으로 하자면 괄호를 써주지 않으면 간혹 생각하지 않은 런타임 오류를 발생한다. 우선순위가 꼬여버려 이상한 값이 나오기 때문이다.
그리고 inline 함수는 데이터 타입을 지정해줄 수 있고 #define은 지정해줄 수 없다. inline함수가 복잡하고 긴 요구사항을 처리할 수 있는데 유리하고 #define은 데이터 타입에 관계없이 유연하게 동작가능하다.