fork download
  1. #include <stdio.h>
  2.  
  3. #define DBG_LEVEL 3
  4.  
  5. #define DBG_LOG_EMPTY do {} while (0)
  6. #define DBG_LOG_MSG(args) do { printf args; } while (0)
  7.  
  8. #if DBG_LEVEL >= 3
  9. #define DBG_LOG_4(args) DBG_LOG_MSG(args)
  10. #define DBG_LOG_3(args) DBG_LOG_MSG(args)
  11. #define DBG_LOG_2(args) DBG_LOG_EMPTY
  12. #define DBG_LOG_1(args) DBG_LOG_EMPTY
  13. #elif DBG_LEVEL >= 2
  14. #define DBG_LOG_4(args) DBG_LOG_MSG(args)
  15. #define DBG_LOG_3(args) DBG_LOG_MSG(args)
  16. #define DBG_LOG_2(args) DBG_LOG_MSG(args)
  17. #define DBG_LOG_1(args) DBG_LOG_EMPTY
  18. #elif DBG_LEVEL >= 1
  19. #define DBG_LOG_4(args) DBG_LOG_MSG(args)
  20. #define DBG_LOG_3(args) DBG_LOG_MSG(args)
  21. #define DBG_LOG_2(args) DBG_LOG_MSG(args)
  22. #define DBG_LOG_1(args) DBG_LOG_MSG(args)
  23. #else
  24. #define DBG_LOG_4(args) DBG_LOG_EMPTY
  25. #define DBG_LOG_3(args) DBG_LOG_EMPTY
  26. #define DBG_LOG_2(args) DBG_LOG_EMPTY
  27. #define DBG_LOG_1(args) DBG_LOG_EMPTY
  28. #endif
  29.  
  30. #define DBG_LOG(level, args) DBG_LOG_##level(args)
  31.  
  32. int main(void) {
  33. // your code goes here
  34.  
  35. DBG_LOG(1, ("level %d\n", 1));
  36. DBG_LOG(2, ("level %d\n", 2));
  37. DBG_LOG(3, ("level %d\n", 3));
  38. DBG_LOG(4, ("level %d\n", 4));
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 9432KB
stdin
Standard input is empty
stdout
level 3
level 4