Перегрузка не существует в C, поэтому наличие двух объявлений не будет работать в одном и том же тексте.
Это должен быть довольно старый компилятор, чтобы не ошибиться в этом, или он еще не нашел объявление функции!
Некоторые компиляторы не будут предупреждать / ошибаться при вызове неопределенной функции. Это, вероятно, то, что вы сталкиваетесь. Я бы посоветовал вам взглянуть на флаги командной строки компилятора, чтобы увидеть, есть ли флаг, который вы можете использовать для получения этих предупреждений, потому что на самом деле вы можете обнаружить довольно много похожих ошибок (слишком много параметров, вероятно, будут работать нормально, но слишком немногие будут использовать "неопределенные" значения ...)
Обратите внимание, что это можно сделать (добавить дополнительные параметры) при использовании многоточия, как в printf ():
printf(const char *format, ...);
Я бы предположил, что в какой-то момент функция имела 3 параметра, а последний был удален, потому что он не использовался, а некоторые части кода не были исправлены, как должно быть. Я бы удалил этот 3-й параметр, на случай, если стек пойдет в неправильном порядке и, следовательно, не сможет отправить правильные параметры в функцию.