Why on earth would you want to have macros with a variable number of arguments in C/C++?

To be able to have debug messages in your programs, with the possibility of enabling/disabling them at compile time, with no performance loss or any extra bloat in your production version. That's why.