Этот вопрос касается целесообразности использования пустых указателей в конкретной реализации.
У меня есть относительно простая программа, которая состоит из бесконечного цикла. В каждом цикле программа перебирает фиксированный диапазон постоянных значений и вызывает функцию для каждого значения. Конкретная функция, которая вызывается, может быть одной из трех доступных и указана во время выполнения аргументом. Перед запуском бесконечного цикла существует блок условий, который устанавливает функциональный указатель на функцию на основе предоставленного аргумента. Таким образом, логика условий должна выполняться только один раз, а не на каждой итерации в каждом цикле.
Это я реализовал, и он работает хорошо, но я хочу сохранять состояние между каждым вызовом функции. Мое предложение состоит в том, чтобы сохранить состояние в структуре и передать эту структуру при вызове функции для каждого из значений. Проблема состоит в том, что каждой функции требуется отдельная структура для хранения различного набора значений ее состояния, а прототип всех трех функций должен быть совместимым (для указателя функции). Я намерен решить эту проблему, используя указатель void в прототипах трех функций, поддерживая, таким образом, совместимые прототипы, но позволяя передавать разные структуры каждой функции.
Вопрос в том; Является ли мое предложение подходящим использованием пустых указателей или оно вводит слишком много динамизма во время выполнения, и поэтому я должен переосмыслить свой подход?
Примечание. Невозможно использовать статические переменные в каждой из трех функций, поскольку структуры также должны быть доступны в бесконечном цикле, поскольку также требуется некоторая обработка до и после повторения диапазона значений.