#include <stdio.h>
#define STR(X) (#X)
#define GLOBAL_INT (3)
// I AM TRYING TO SAVE THE TEXTUAL MACRO CONTENT "GLOBAL_INT" (WITHOUT THE QUOTES)
// IN ANOTHER MACRO SO THAT I CAN UNDEFINE GIM AND STILL REFER TO GLOBAL_INT
#define GIM (GLOBAL_INT)
#define GIM_SAVE (GIM)
#define GIM_SAVE_STR (STR(GIM))
#define STR_GIM_SAVE (STR(GIM_SAVE))
const char *strGimSave = STR(GIM_SAVE);
const char *gimSaveStr = GIM_SAVE_STR;
const char *strGimSaveM = STR_GIM_SAVE;
const char *gimStr = STR(GIM);
#undef GIM
int main(int argc, char *argv[])
{
printf("strGimSave=%s\n", strGimSave);
printf("gimSaveStr=%s\n", gimSaveStr);
printf("strGimSaveM=%s\n", strGimSaveM);
printf("gimStr=%s\n", gimStr);
const char *gim_save = STR(GIM_SAVE);
const char *gim_save_str = GIM_SAVE_STR;
const char *str_gim_save = STR_GIM_SAVE;
printf("\ngim_save=%s\n", gim_save);
printf("gim_save_str=%s\n", gim_save_str);
printf("str_gim_save=%s\n", str_gim_save);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNUUihYKSAoI1gpCgojZGVmaW5lIEdMT0JBTF9JTlQgKDMpCgovLyBJIEFNIFRSWUlORyBUTyBTQVZFIFRIRSBURVhUVUFMIE1BQ1JPIENPTlRFTlQgIkdMT0JBTF9JTlQiIChXSVRIT1VUIFRIRSBRVU9URVMpCi8vCUlOIEFOT1RIRVIgTUFDUk8gU08gVEhBVCBJIENBTiBVTkRFRklORSBHSU0gQU5EIFNUSUxMIFJFRkVSIFRPIEdMT0JBTF9JTlQKCiNkZWZpbmUgR0lNIChHTE9CQUxfSU5UKQoKI2RlZmluZSBHSU1fU0FWRSAoR0lNKQojZGVmaW5lIEdJTV9TQVZFX1NUUiAoU1RSKEdJTSkpCiNkZWZpbmUgU1RSX0dJTV9TQVZFIChTVFIoR0lNX1NBVkUpKQpjb25zdCBjaGFyICpzdHJHaW1TYXZlID0gU1RSKEdJTV9TQVZFKTsKY29uc3QgY2hhciAqZ2ltU2F2ZVN0ciA9IEdJTV9TQVZFX1NUUjsKY29uc3QgY2hhciAqc3RyR2ltU2F2ZU0gPSBTVFJfR0lNX1NBVkU7CmNvbnN0IGNoYXIgKmdpbVN0ciA9IFNUUihHSU0pOwoKI3VuZGVmIEdJTQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewoJcHJpbnRmKCJzdHJHaW1TYXZlPSVzXG4iLCBzdHJHaW1TYXZlKTsKCXByaW50ZigiZ2ltU2F2ZVN0cj0lc1xuIiwgZ2ltU2F2ZVN0cik7CglwcmludGYoInN0ckdpbVNhdmVNPSVzXG4iLCBzdHJHaW1TYXZlTSk7CglwcmludGYoImdpbVN0cj0lc1xuIiwgZ2ltU3RyKTsKCQoJY29uc3QgY2hhciAqZ2ltX3NhdmUgPSBTVFIoR0lNX1NBVkUpOwoJY29uc3QgY2hhciAqZ2ltX3NhdmVfc3RyID0gR0lNX1NBVkVfU1RSOwoJY29uc3QgY2hhciAqc3RyX2dpbV9zYXZlID0gU1RSX0dJTV9TQVZFOwoJcHJpbnRmKCJcbmdpbV9zYXZlPSVzXG4iLCBnaW1fc2F2ZSk7CglwcmludGYoImdpbV9zYXZlX3N0cj0lc1xuIiwgZ2ltX3NhdmVfc3RyKTsKCXByaW50Zigic3RyX2dpbV9zYXZlPSVzXG4iLCBzdHJfZ2ltX3NhdmUpOwoJCglyZXR1cm4gMDsKfQ==