Strange function definition/declaration

Hey guys.

Recently I come across function declared line this:
type (function)(argument list);
example
void (free)(void *ptr);
Definition is the same
void (free)(void *ptr)
{
...
}

It actually came from memcheck library.

So, the question is what do parentheses around free mean?

Thanks.
As far as I am aware, the parentheses around free make absolutely no difference.

The only time you see parentheses around a function name, I think, is for function pointers:
void (*free)(void* ptr);
This means a pointer called free to a function taking a void* argument.

Hope this clarifies things :)
Thank you, all.
I got it myself finally.

There is this define:
#define free(ptr) free_internal(__FILE__, __LINE__, ptr)

Without parentheses preprocessor replaces free with free_internal.
With parentheses it leaves it as (free).
Topic archived. No new replies allowed.