#include <stdio.h>

#define __NARGS(_1, _2, _3, _4, _5, VAL, ...) VAL
#define NARGS(...) (sizeof(#__VA_ARGS__) == sizeof("") ? 0 : __NARGS(__VA_ARGS__, 5,4,3,2,1))

#define FOO(...) NARGS(__VA_ARGS__)

int main()
{
  printf("%d\n", FOO());     // prints 0
  printf("%d\n", FOO(/*comment*/));     // prints 0
  printf("%d\n", FOO(1));    // prints 1
  printf("%d\n", FOO(1, 2)); // prints 2

  return 0;
}
