I see this line in C:
#define log(format, args...) snprintf(buffer + strlen(buffer), 1023 - strlen(buffer), format, ##args);
What does the
That's the "token-pasting" preprocessor operator, and I don't think that macro uses it correctly.
In standard C, the "##
" is for concatenating tokens together within a macro. Here, this macro is not in standard C, but in "Gnu C", the dialect implemented by GCC. The "##
" is used to remove the comma if the extra arguments (in args
) turn out to be empty. See the GCC manual.
This is a gcc extension (so is args...
, the C99 version is to use ...
and __VA_ARGS__
) to remove the final comma if the variable argument list args
is empty.