I want to backup macro value like below.
g++ ... -D_XOPEN_SOURCE=600 current _XOPEN_SOURCE value is 600
// xxx.h
#define _XOPEN_SOURCE 700 // redefine
#ifdef _XOPEN_SOURCE // 600
#define _XOPEN_SOURCE_BACK _XOPEN_SOURCE
#undef _XOPEN_SOURCE // removed
#endif
#include "xxx.h" // changed to 700
// _XOPEN_SOURCE_BAKC will be changed to 700
#ifdef _XOPEN_SOURCE_BACK
#undef _XOPEN_SOURCE // removed
#define _XOPEN_SOURCE _XOPEN_SOURCE_BACK
#endif
But as you know the _XOPEN_SOURCE_BACK value will be removed when #undef _XOPEN_SOURCE Is there any solution to store _XOPEN_SOURCE value using macro?
How to backup #define macro value in C?
Maybe you can use an
enum
(a real constant known at compile time):Output: