У меня есть указатель на функцию внутри struct
, который динамически устанавливается во время выполнения на адрес другой функции в различных местах в в моем коде. Он определен в моем заголовочном файле следующим образом:
void *(*run)();
Во время компиляции я получаю следующее предупреждение об этом:
warning: function declaration isn't a prototype
Это предупреждение неопасное, потому что указатель используется во многих местах моего кода для вызова функция, на которую он указывает, и все работает нормально. Однако я бы действительно хотел бы отключить предупреждение.
Если я изменю его на это:
void *(*run)(void);
Я получаю ошибки компиляции везде, где я его использую, поскольку различные функции, использующие указатель, имеют разное количество аргументов, и указание void
внутри круглых скобок говорит компилятору, что он не принимает никаких аргументов.
Я не могу использовать va_list
или что-нибудь в этом роде, поскольку это просто указатель на другую функцию, и я использую один указатель для всех них, потому что он сохраняет s код чистый и простой.
Я могу отключить предупреждение, добавив это к моим флагам компилятора:
-Wno-strict-prototypes
Но я бы предпочел не отключать предупреждения компилятора с помощью флагов, если я могу этого избежать.
Итак, мой вопрос: Как записать этот указатель на функцию в коде таким образом, чтобы компилятор был удовлетворен тем фактом, что он принимает любое количество любых аргументов?
Код работает отлично. Я просто хочу, чтобы предупреждение исчезло.