I have used many MACRO's in my project. But recently I have seen a macro which I couldn't able to understand. 

```
#include "stdio.h"

  #define   ELV_CODE        
 #define    MAN_CODE        
 #define    CHANGE_DAT      
 #define    DAT_MAN_CODE    

 #define MY_FUN(type, memclass) memclass type

typedef unsigned char uint8;
typedef uint8 ReturnType;

MY_FUN(ReturnType, CHANGE_DAT) Occ_Fun(unsigned int MyEvent)
{
    uint8 Return_Val = 1;
     printf("Hello World\n");
     return Return_Val;
}

int main()
{
  char str[20];

  strcpy(str, "Hello, Word!");
  Occ_Fun((unsigned int)16);
  return 0;
}

```

In above Code there is a MACRO for MY\_FUN. The MACRO Should be either 

> 
> MY\_FUN(type, memclass) memclass
> 
> 
> 

or 

> 
> MY\_FUN(type, memclass) type
> 
> 
> 

But what #define MY\_FUN(type, memclass) memclass type mean?