6.5.15 Макросы pragma Push/Pop
Для совместимости с компиляторами Microsoft Windows GCC поддерживает «#pragma push_macro("macro_name")» и «#pragma pop_macro("macro_name")».
-
#pragma push_macro("macro_name") -
Эта директива pragma сохраняет значение макроса с именем macro_name на вершине стека этого макроса.
-
#pragma pop_macro("macro_name") Эта директива pragma присваивает макросу с именем macro_name значение, находящееся на вершине стека этого макроса. Если стек для macro_name пуст, значение макроса остаётся неизменным.
Например:
#define X 1
#pragma push_macro("X")
#undef X
#define X -1
#pragma pop_macro("X")
int x [X];
В этом примере определение X как 1 сохраняется директивой #pragma
push_macro и восстанавливается директивой #pragma pop_macro.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Push_002fPop-Macro-Pragmas.html