There is a definition here:
static void nv_operator(cap) cmdarg_T *cap; ....
This definition style uses a list of identifiers for its parameters. The style is deprecated (deprecated), but can still be used in C. Identifiers are named in the parameter list, and their type is indicated in declarations that immediately follow the function declarator but precede the function body.
The __ARGS macro must be processed by compilers that are not aware of prototypes for functions (another form for declaring parameters is with a type and name combined directly in the function parameter list). I think, then, he simply did not give out any parameters in the declarations.
Update: see this code in vim.h :
#if defined(MACOS) && (defined(__MRC__) || defined(__SC__)) # define __ARGS(x) x #endif #ifndef __ARGS # if defined(__STDC__) || defined(__GNUC__) || defined(WIN3264) # define __ARGS(x) x # else # define __ARGS(x) () # endif #endif
source share