2010년 7월 7일 수요일

Macro Function & Inline Function

매크로 함수란 말 그대로 매크로로 함수를 정의하는 것이다. 물론 일반 함수처럼 인자를 전달받을수 있고 바디 선언을 통해 반환을 결정하는 것과 완전히 같지만 모양새가 약간 다르다.

# define OEMC_knlSetTimerEx(_tm, _timeout, _param, _repeat) \
    {                                                                                   \
        gTmPack.i64timeout   = _timeout;                                   \
        gTmPack.bRepeat      = _repeat;                                   \
        MC_knlSetTimer(_tm, _timeout, (void *)&gTmPack);        \
    }

 

Macro Ex)

#include <stdio.h>
#include <stdlib.h>

//#define _malloc malloc
#define _malloc(_sz) _Malloc(_sz, __FILE__, __LINE__)

void *_Malloc(int siz, char *file, int line)
{
 printf("memory alloced : %s, %d\n", file, line);

 return malloc(siz);
}

int main()
{
 void *kk;

 kk = _malloc(10);

#undef _malloc
#define _malloc malloc

 kk = _malloc(10);

 return 0;
}