Я поражен благоговением из-за ответа Кристофа выше.
Так что ничего не нужно делать в этом случае, когда gcc имеет некоторые знания о математических функциях.Но если у вас есть функция (может быть, реализованная вами), которая не может быть рассчитана вашим компилятором C, или если ваш компилятор C не настолько умен (или вам нужно заполнить сложные структуры данных или по какой-либо другой причине), вы можете использовать язык более высокого уровнядействовать как макропроцессор.В прошлом я использовал для этой цели eRuby , но ( ePerl тоже должен работать очень хорошо, и это другой очевидный доступный и более или менее удобный выбор.
Вы можете указать make-правила для преобразования файлов с расширением .eruby
(или .eperl
или любого другого) в файлы с этим расширением, чтобы, например, если вы пишете файлы module.c.eruby
или module.h.eruby
, то make
автоматически знает, как сгенерировать module.c
или module.h
, соответственно, и поддерживает их актуальность. В своем правиле make вы можете легко добавить генерацию комментария, который предупреждает о непосредственном редактировании файла.
Если выЕсли вы используете Windows или что-то подобное, я не могу объяснить, как добавить поддержку автоматического запуска этого преобразования для вашей любимой IDE, но я считаю, что это возможно, или вы могли бы просто запустить make
за пределамиваш IDE всякий раз, когда вам нужно изменить эти .eruby
(или что-то еще) файлы.
Кстати, я видел это с невероятномаленькие строки кода, которые я видел в eLua, для использования Lua в качестве макроязыка.Конечно, любой другой язык сценариев с поддержкой регулярных выражений и гибких правил компоновки также должен работать (но Python подходит для этой цели из-за строгих правил пробелов).