Comment puis-je supprimer le "déclaration implicite de la fonction" mises en garde?

Comment puis-je compiler le fichier lex avec gcc sans recevoir les avertissements suivants?

lex.yy.c: In function `yy_init_buffer':
lex.yy.c:1688: warning: implicit declaration of function `fileno'
lex.l: In function `storeLexeme':
lex.l:134: warning: implicit declaration of function `strdup'

Ce sont les bibliothèques j'ai compris.

%{
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
%}

La fonction yy_init_buffer n'est pas dans le fichier. Ce qui suit est la fonction storeLexeme.

 int storeLexeme() {
for (int i = 0; i < count; i++) {
    char *curr = *(symbolTable + i); 
    if (strcmp(curr, yytext) == 0) {
        return i;
    }
}
char *lexeme = (char *)malloc(sizeof(char *));
lexeme = (char *)strdup(yytext);
symbolTable[count] = lexeme;
count++;
return (count - 1);
 }

Comment puis-je supprimer les avertissements?

J'ai changé le flex de la balise, comme il est à propos d'Adobe flex et pas GNU lex clone.
Quelle plate-forme, UNIX ou Windows?
Ce ne sont pas des "bibliothèques"; ils sont "en-têtes". Les bibliothèques sont utilisés dans la ligne de liaison; le code source de références en-têtes.

OriginalL'auteur idealistikz | 2012-02-24