fork download
  1. #include <stdio.h>
  2.  
  3. inline void logMsg(const char*fmt, int n1,int n2,int n3,int n4,int n5,int n6)
  4. {
  5. printf(fmt,n1,n2,n3,n4,n5,n6);
  6. }
  7.  
  8. #define LOGMSG1(fmt,n1) logMsg(fmt,(int)n1,0,0,0,0,0)
  9. #define LOGMSG2(fmt,n1,n2) logMsg(fmt,(int)n1,(int)n2,0,0,0,0)
  10. #define LOGMSG3(fmt,n1,n2,n3) logMsg(fmt,(int)n1,(int)n2,(int)n3,0,0,0)
  11. #define LOGMSG4(fmt,n1,n2,n3,n4) logMsg(fmt,(int)n1,(int)n2,(int)n3,(int)n4,0,0)
  12. #define LOGMSG5(fmt,n1,n2,n3,n4,n5) logMsg(fmt,(int)n1,(int)n2,(int)n3,(int)n4,(int)n5,0)
  13. #define LOGMSG6(fmt,n1,n2,n3,n4,n5,n6) logMsg(fmt,(int)n1,(int)n2,(int)n3,(int)n4,(int)n5,(int)n6)
  14. #define GET_NAME(_1,_2,_3,_4,_5,_6,NAME,...) NAME
  15. #define TRACE(fmt, ...) GET_NAME(__VA_ARGS__,LOGMSG6,LOGMSG5,LOGMSG4,LOGMSG3,LOGMSG2,LOGMSG1)(fmt,__VA_ARGS__)
  16.  
  17. int main(void) {
  18. logMsg("%d,%d,%d,%d,%d,%d\n",1,2,3,4,5,6);
  19. logMsg("%d,%d,%d,%d,%d\n", 1,2,3,4,5,0);
  20. logMsg("%d,%d,%d,%d\n", 1,2,3,4,0,0);
  21. logMsg("%d,%d,%d\n", 1,2,3,0,0,0);
  22. logMsg("%d,%d\n", 1,2,0,0,0,0);
  23. logMsg("%d\n", 1,0,0,0,0,0);
  24.  
  25. TRACE("%d,%d,%d,%d,%d,%d\n", 1,2,3,4,5,6);
  26. TRACE("%d,%d,%d,%d,%d\n", 1,2,3,4,5);
  27. TRACE("%d,%d,%d,%d\n", 1,2,3,4);
  28. TRACE("%d,%d,%d\n", 1,2,3);
  29. TRACE("%d,%d\n", 1,2);
  30. TRACE("%d\n", 1);
  31. return 0;
  32. }
  33.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
1,2,3,4,5,6
1,2,3,4,5
1,2,3,4
1,2,3
1,2
1
1,2,3,4,5,6
1,2,3,4,5
1,2,3,4
1,2,3
1,2
1