Здравствуйте.
Имеется некий код:
#ifdef func
#define temp func
#undef func
#endif
// тут выполняется какой-то код
#ifdef temp
#define func temp
#undef temp
#endif
Смысл его прост: отменить действие макроса в определенной части кода, а по ее истечении восстановить этот макрос.
Проблема заключается в том, что на одной машине GCC отрабатывает ожидаемым образом, а на другой, func раскрывается буквально в temp, и в stderr выводится куча предупреждений вида undefined function temp.
Есть ли способы задать жестко алгоритм поведения препроцессора, чтобы во втором определении func соответствовало значение temp, а не название макроса (temp). Возможно, какие-то флаги компиляции отвечают за данное поведение?
Заранее благодарен за ответы.