я не знаю, если название темы точно вводит мою проблему, но главное: в моем коде компаний , есть функция, например:ищет макрос, который заменит функцию
float func_x(float a){
float b
return b
}
что функция occuers примерно в 1000 мест. Теперь новая функция была добавлена:
void func_x2(void *a, void *b){
do sth
}
Эта функция должна заменить все occuerences из func_x
в коде, так что изменения должны происходить из (псевдокод):
float p = 123.33;
float x = func_x(p)
to:
float x;
float p = 123.33;
func_x2((void *)&p, (void*)&x);
Мой вопрос: ли это даже возможно написать макрос C (даже очень сложный), который заменит func_x на func_x2, поэтому код не изменится вообще? Кто-нибудь пытался это сделать?
С уважением J
Это плохая практика, потому что она делает код в основном нечитаемым. Вы не можете поверить, что какой-либо вызов функции вы читаете, потому что макрос может изменить его. Вы никогда не сможете доверять тому, что вы читаете. Ваш исходный код становится ложью. –
Слава Богу, я не работаю для вашей компании. Просто удалите исходную функцию и вручную исправьте 1000 мест, которые она вызывается. 1000 мест не так много. Это одноразовая работа, и код будет оставлен в гораздо лучшем состоянии, чем если бы вы использовали какой-то макро-хакер. Раньше мне приходилось поддерживать такой код, это кошмар. – john
Возможно, но это не лучшая практика. Время, «спасенное» от этого, будет потеряно 10 раз за его поддержание. –