fork download
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. uint64_t bagor(void *ptr){
  5. return *(uint64_t*)ptr;
  6. }
  7. #define SWITCH(ptr) uint64_t Switch = (bagor(ptr)); if (0){}
  8. #define CASE(ptr) else if (Switch == bagor(ptr))
  9. #define DEF else
  10.  
  11. void say(const char* who){
  12. printf("%8s says: ",who);
  13. SWITCH(who)
  14. CASE("pituh") {
  15. puts("kokoko");
  16. }
  17. CASE("lalka"){
  18. puts("azaza");
  19. }
  20. CASE("syoma"){
  21. puts("rus-nya");
  22. }
  23. CASE("bagor"){
  24. puts("hhhrghh");
  25. }
  26. CASE("korova"){
  27. puts("mootools");
  28. }
  29. DEF{
  30. puts("dunno, lol");
  31. }
  32. }
  33. int main()
  34. {
  35. say("syoma");
  36. say("korova");
  37. say("pituh");
  38. say("neznayka");
  39.  
  40. return 0;
  41. }
Success #stdin #stdout 0s 5396KB
stdin
Standard input is empty
stdout
   syoma says: rus-nya
  korova says: mootools
   pituh says: kokoko
neznayka says: dunno, lol