Предыдущие ораторы
@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 чтобы удалить такое определение.
- возможно прототип вашей реализации не совпадает с прототипом объявленным в заголовочных файлах. Сделайте так, чтобы ваш прототип совпадал.
- возможно библиотечная функция определена в заголовочном файле. Насколько мне известно ни одна функция стандартной библиотеки так не делает.
Эта рекомендация основана на базовых принципах статической и динамической линковки. Задавайте вопросы, если нужны дальнейшие пояснения.