la “déclaration implicite de la fonction "fcloseall' est pas valide en C99” lors de la compilation de gnu99

De considérer les éléments suivants du code C:

#include <stdio.h>
#include <stdlib.h>

void fatal(const char* message){
 /*
  Prints a message and terminates the program.
  Closes all open i/o streams before exiting.
 */
 printf("%s\n", message);
 fcloseall();
 exit(EXIT_FAILURE);
}

Je suis en utilisant clang 2,8 à compiler: clang -Wall -std=gnu99 -o <executable> <source.c>

Et obtenez: implicit declaration of function 'fcloseall' is invalid in C99

Qui est vrai, mais je suis explicitement la compilation de gnu99 [ce qui devrait soutenir fcloseall()], et de ne pas c99.
Bien que le code s'exécute, je n'aime pas avoir en suspens avertissements lors de la compilation.
Comment puis-je résoudre ce problème?

Modifier: correction de typo.

J'ai coupé et collé votre code et un lien prévu erreur sur main pas défini, mais pas de la déclaration implicite de l'erreur. Êtes-vous sûr que votre erreur vient de la version du code que vous avez montré?
Qu'advient-il si vous déclarez vous-même? I. e. mettre int fcloseall(void); quelque part.
Il n'y a absolument aucune raison de l'appeler fcloseall. Il est inutile non standard de la fonction. exit déjà se ferme en toute sécurité tous les fichiers, et si votre programme prendra fin avec _Exit ou exec au lieu de cela, fflush(NULL) vider tous les fichiers qui est tout aussi bonnes et conformes aux normes.
Ok, c'est de l'information utile -merci. Je vais adapter mon code en conséquence.

OriginalL'auteur Emanuel Ey | 2011-01-13