I've encountered some strange problem like
"badly punctuated parameter list" in macro definition for C when I was compiling perl modules on Solaris platform. After my research, I found that it is due to ancient gcc, like 2.81 can't process the following macro definition.
#define my_snprintf(buffer, len, ...) snprintf(buffer, len, __VA_ARGS__)
You have to change it to a more compatible form like the following.
#define my_snprintf(buffer, len, ARGS...) snprintf(buffer, len, ##ARGS)