Salut les gurus du C

j'ai un peu besoin de vos lumières car dans une revu de code avec un prof il nous a signalé que c'est pas bien d'avoir dans les headers un prototype comme :
mais qui fallait utiliser à la place
.
Tout se qu'il m'a expliqué c'est que la première forme ne dit pas que la fonction a pas de paramètres alors que l'autre oui et que c'est comme ça qui fallait faire. Pas plus d’explications sauf que je devais googler pour savoir plus si je voulais . Alors j'ai googler pis je suis paumé
J'ai trouvé que c'est du à cause d'une ancienne norme qui autorisait ça et que ça traine toujours pour rester compatible avec, que c'est pas la même chose ne c++ où c'est () et (void) c'est pareil
Alors je me pose la question de savoir pourquoi c'est gardé et à quoi ça sert au final ? J'ai pas compris non plus les problèmes si j'oublie void et pourquoi j'ai pas de warnings même quand je compile avec les -wall et -wextra ?
J'ai pas compris à quoi ça correspond quand j'ai lu que la première forme c'est pour une fonction qui prend un nombre fixe de paramètres alors qu'en en déclare pas