Мне нужно временно перезаписать макрос, а затем восстановить его. Как:
#define FOO X
#save FOO
#define FOO Y
...
#restore FOO
Возможно ли это в стандартном препроцессоре C? В GCC?
ADDED. Пример реального мира. Я использую глобальный макрос для исключения ошибок. Он действует как assert
, но для постоянного использования не только для отладочных версий; поэтому, например, я обычно вызываю функции (с побочным эффектом) внутри макроса. Он определен один раз, но определение не является постоянным; поэтому я не знаю, априори. Для некоторой части кода мне нужна своя, модифицированная версия макроса, но я хочу сохранить общий стиль кода. Это выглядит некрасиво, когда одна часть кода использует один макрос, другая часть использует другой макрос - оба макроса имеют одну и ту же цель, но немного отличаются от реализации.
Итак, мне полезно сохранить исходный макрос временно, использовать другую версию для части кода, после чего восстановить исходный макрос.