Пожалуйста, мне нужна ваша помощь. По сути, я сталкиваюсь с этим предупреждением после компиляции с gcc, и не могу вывести ошибку:
Вот подробности:
Предупреждающее сообщение, которое я получаю, выглядит следующим образом:
y.tab.c: в функции «yyparse»: y.tab.c: 1317
предупреждение: несовместимое неявное объявление встроенной функции ‘strlen’
Мой файл Lex выглядит следующим образом:
%{
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include "y.tab.h"
void yyerror(const char*);
char *ptrStr;
%}
%START nameState
%%
"Name:" { BEGIN nameState; }
<nameState>.+ {
ptrStr = (char *)calloc(strlen(yytext)+1, sizeof(char));
strcpy(ptrStr, yytext);
yylval.sValue = ptrStr;
return sText;
}
%%
int main(int argc, char *argv[])
{
if ( argc < 3 )
{
printf("Two args are needed: input and output");
}
else
{
yyin = fopen(argv[1], "r");
yyout = fopen(argv[2], "w");
yyparse();
fclose(yyin);
fclose(yyout);
}
return 0;
}
Мой файл Yacc выглядит следующим образом:
%{
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include "y.tab.h"
void yyerror(const char*);
int yywrap();
extern FILE *yyout;
%}
%union
{
int iValue;
char* sValue;
};
%token <sValue> sText
%token nameToken
%%
StartName: /* for empty */
| sName
;
sName:
sText
{
fprintf(yyout, "The Name is: %s", $1);
fprintf(yyout, "The Length of the Name is: %d", strlen($1));
}
;
%%
void yyerror(const char *str)
{
fprintf(stderr,"error: %s\n",str);
}
int yywrap()
{
return 1;
}
* Мне было интересно, как удалить это предупреждение. Пожалуйста, любые предложения высоко ценятся!
Заранее спасибо.