Push/Pop Macro Pragmas - Using the GNU Compiler Collection (GCC)
Description: Using the GNU Compiler Collection (GCC)

Next: Function Specific Option Pragmas, Previous: Visibility Pragmas, Up: Pragmas

#### 6.56.12 Push/Pop Macro Pragmas

For compatibility with Microsoft Windows compilers, GCC supports ‘`#pragma push_macro("macro_name")`’ and ‘`#pragma pop_macro("macro_name")`’.

`#pragma push_macro(`"macro_name"`)`
  This pragma saves the value of the macro named as macro_name to the top of the stack for this macro.
`#pragma pop_macro(`"macro_name"`)`
  This pragma sets the value of the macro named as macro_name to the value on top of the stack for this macro. If the stack for macro_name is empty, the value of the macro remains unchanged.

For example:

         #define X  1
         #pragma push_macro("X")
         #undef X
         #define X -1
         #pragma pop_macro("X")
         int x [X];

In this example, the definition of X as 1 is saved by `#pragma push_macro` and restored by `#pragma pop_macro`.