If I have a oneliner in C such as 

```
size_t maxSizeOf(const char *s)
{
     return strlen(s) > M_MAX_SIZE ? M_MAX_SIZE : strlen(s);
}

```

would it be better to have a macro defined such that 

```
#define MAX_SIZE_OF(s) (strlen(s) > M_MAX_SIZE ? M_MAX_SIZE : strlen(s))

```

or would it be better to have 

```
size_t maxSizeOf(const char *s)
{
     size_t len = strlen(s);
     return len > M_MAX_SIZE ? M_MAX_SIZE : len;
}

```

Also, is there a way to turn the second function into a macro for maximum efficiency?