In kernel you’ll see two type of variaidic macro
#define __stringify(x...) __stringify_1(x)this is same as
#define __stringify(...) __stringify_1(__VA_ARGS__)In standard C99 and later, a variadic macro must look like above one,
However, GCC introduced an extension that allows you to give a name to the variable arguments by placing the ellipsis immediately after an identifier (x...).
When you write x..., the compiler treats x as a named parameter that bundles everything passed into the macro (including any commas separating multiple arguments).
Note: there is
ellipsis (...)parameter for c function also, that allow the function to accept any number of pararmeters.