No, there's no operator overloading in C so the functor concept will not be achievable.

I don't know for sure what the problem is from your description. You said you're using a variable parameter list so that will necessarily compile with cdecl calling conventions and should be OK but I don't see how it is you are determining whether or not there are extra parameters in the list. You can end up with a messed up stack if you do it wrong.

Is there some reason why you can't use a dummy parameter in the functions that don't need the extra parameter and just ignore it?