Ответ 1
Мне приходилось делать что-то подобное раньше, пушистая с типами (особенно long
s). Лучше всего просто вручную заменить типы вручную, поскольку это самый простой и самый простой способ получить то, что вы хотите. Вы можете попробовать сыграть трюки с помощью макросов или массировать компилятор, но из моего опыта вы просто создаете больше проблем, чем решаете, и обычно это хрупкое решение, которое ломается позже.
К счастью, источники, с которыми вы работаете, выглядят в хорошем состоянии, а изменения, которые вы ищете, довольно полные. Вы можете просто пробить это. Предполагая, что вы используете Unix-подобную систему, вы можете запустить следующую команду из базового каталога musl:
$ grep -Rl 'long double' * | xargs -tn1 sed -i '' -e 's/long double/double/g'
Эта команда:
- Ищет строку
long double
во всех файлах, рекурсивно и возвращает имена файлов, которые содержат эту строку. - который передается в
xargs
, который вызывает командуsed
для каждого имени файла, печатается по мере ее прохождения. - Когда
sed
запускается, он изменяет файл на месте и заменяетlong double
наdouble
.
Когда я попробовал эту команду, она "просто сработала". Я хотел бы внимательно изучить diff, чтобы убедиться, что он полностью ударил и не изменил поведение библиотеки.