Своя версия функции из стандартной библиотеки С — возможно ли?
Предыдущие ораторы @fornit1917 @GavriKos и @DancingOnWater насоветовали какой-то странной фигни.
Просто определяйте свою функцию и всё. Вот вам пример:$ cat print.c 
#include <stdio.h>
#undef printf
int printf(const char *fmt, ...)
{
        puts("my printf\n");
        return 0;
}
int main()
{
        printf("%d\n", 10);
        return 0;
}
$ gcc print.c -o print
$ ./print 
my printf
Если будут ошибки времени компиляции внимательно читайте их текст:
- возможно библиотечная функция определена в заголовочном файле в виде макроса. Используйте #undef чтобы удалить такое определение. 
- возможно прототип вашей реализации не совпадает с прототипом объявленным в заголовочных файлах. Сделайте так, чтобы ваш прототип совпадал.
- возможно библиотечная функция определена в заголовочном файле. Насколько мне известно ни одна функция стандартной библиотеки так не делает.
Эта рекомендация основана на базовых принципах статической и динамической линковки. Задавайте вопросы, если нужны дальнейшие пояснения.
Да, конечно, выкиньте хедер сторонней библиотеки из тех файлов, откуда надо и замените своим.
Если этого сделать нельзя - переименовать свою функцию. Это единственно верный путь.