O printf pode ser substituído por put automaticamente em um programa C?

#include <stdio.h>

int puts(const char* str)
{
    return printf("Hiya!\n");
}

int main()
{
    printf("Hello world.\n");
    return 0;
}

Este código gera "Hiya!" quando correr. Alguém poderia explicar o porquê?

A linha de compilação é:gcc main.c

EDIT: agora é puro C, e qualquer coisa estranha foi removida da linha de compilação.

questionAnswers(0)

yourAnswerToTheQuestion