Question: How does the following snippet work? What is IN? Eclipse says that IN stands for 'macro expansion': 

```
 UWORD32 (*get_u32)(IN UWORD8 *buffer_ptr);    /* Gets unsigned 32bit word   */
                                           /* from the buffer */

```

This above code is part of a struct. and is used like this.

```
struct my struct s;
UWORD8* buf;

s->get_u32(buf);

```

How does it work?

Answer: 
I would guess that `IN` is `#define`d somewhere as `const`:

```
#define IN const    // input parameters are const

```

`get_u32` is just a function pointer - the function takes a single parameter (a pointer to a `UWORD8`) and returns a `UWORD32`.
You can even declare IN as "nothing"

```
#define IN
#define OUT

```

In this case it will just make your code more readable :)

```
void func ( IN param_t param1,         /* INPUT PARAM */
            IN param_t param2,         /* INPUT PARAM */
            OUT param_t *param3);      /* OUTPUT PARAM */

```