fork(1) download
  1. #include <stdio.h>
  2.  
  3. #define STR(X) (#X)
  4.  
  5. #define GLOBAL_INT (3)
  6.  
  7. // I AM TRYING TO SAVE THE TEXTUAL MACRO CONTENT "GLOBAL_INT" (WITHOUT THE QUOTES)
  8. // IN ANOTHER MACRO SO THAT I CAN UNDEFINE GIM AND STILL REFER TO GLOBAL_INT
  9.  
  10. #define GIM (GLOBAL_INT)
  11.  
  12. #define GIM_SAVE (GIM)
  13. #define GIM_SAVE_STR (STR(GIM))
  14. #define STR_GIM_SAVE (STR(GIM_SAVE))
  15. const char *strGimSave = STR(GIM_SAVE);
  16. const char *gimSaveStr = GIM_SAVE_STR;
  17. const char *strGimSaveM = STR_GIM_SAVE;
  18. const char *gimStr = STR(GIM);
  19.  
  20. #undef GIM
  21.  
  22. int main(int argc, char *argv[])
  23. {
  24. printf("strGimSave=%s\n", strGimSave);
  25. printf("gimSaveStr=%s\n", gimSaveStr);
  26. printf("strGimSaveM=%s\n", strGimSaveM);
  27. printf("gimStr=%s\n", gimStr);
  28.  
  29. const char *gim_save = STR(GIM_SAVE);
  30. const char *gim_save_str = GIM_SAVE_STR;
  31. const char *str_gim_save = STR_GIM_SAVE;
  32. printf("\ngim_save=%s\n", gim_save);
  33. printf("gim_save_str=%s\n", gim_save_str);
  34. printf("str_gim_save=%s\n", str_gim_save);
  35.  
  36. return 0;
  37. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
strGimSave=GIM_SAVE
gimSaveStr=GIM
strGimSaveM=GIM_SAVE
gimStr=GIM

gim_save=GIM_SAVE
gim_save_str=GIM
str_gim_save=GIM_SAVE