Я воскрешаю старый старый проект , фактически первый браузер рефакторинга, который пересек рубикон Рефакторинг .
Источник полон макросов, макросов, которые яхотелось бы превратить в тестируемые и поддельные функции.
Мы установили, что, поскольку макросы семантически гораздо богаче, чем функции C, нет общего подхода для преобразования любого макроса в функцию,Но часто макросы представляют собой только прямой последовательный C-код, который по какой-то причине реализован в виде макроса.
В этом случае в основном необходимо преобразовать аргументы макроса в семантику аргумента функции.
Я надеюсь, что у кого-то может быть идея, или подход, или указатели, к чему-то, что является несколько общей моделью того, как это сделать.Хорошо, если это создаст много дополнительных косвенных ссылок, как только я получу это в функцию, я смогу смоделировать и изменить рефакторинг на более простую форму.
Мои дела, как правило, выглядят примерно так* с типичным вызовом вроде
char *fn;
char *ccc;
char *ffin;
CharacterBuffer *iBuf;
GetChar(fn[i],ccc,ffin,iBuf);
(Да, я знаю, я нахожусь на спасательной миссии, верно ...)
Так что я ищу "механическое" преобразованиеправила для аргументов, которые, конечно, потребовали бы косвенности.