C 警告:赋值从指针生成整数而不强制转换[默认启用]
有一个警告,我无法从此代码中删除它。这是我可以提供的代码:C 警告:赋值从指针生成整数而不强制转换[默认启用],c,pointers,casting,warnings,C,Pointers,Casting,Warnings,有一个警告,我无法从此代码中删除它。这是我可以提供的代码: %{ #include <stdlib.h> #include <stdio.h> #include "y.tab.h" %} %% [1-9]+ { yylval.iVal = atoi(yytext); printf("NUMBER\n"); r
%{
#include <stdlib.h>
#include <stdio.h>
#include "y.tab.h"
%}
%%
[1-9]+ {
yylval.iVal = atoi(yytext);
printf("NUMBER\n");
return NUMBER;
}
[a-z] {
printf("VARIABLE\n");
yylval.cVal = yytext;
return VARIABLE;
}
[-()<>=+/*\n] {
printf("OPERATOR\n");
return *yytext;
}
"^" {
printf("POW\n");
return *yytext;
}
[ \t]+ ; // Skip whitespaces.
. yyerror("Unknown character.\n");
%%
int yywrap(void)
{
return 1;
}
%{
#包括
#包括
#包括“y.tab.h”
%}
%%
[1-9]+ {
yylval.iVal=atoi(yytext);
printf(“编号”);
返回号码;
}
[a-z]{
printf(“变量\n”);
yylval.cVal=yytext;
返回变量;
}
[-()=+/*\n]{
printf(“操作员”);
返回*文本;
}
"^" {
printf(“POW\n”);
返回*文本;
}
[\t]+;//跳过空白。
. yyerror(“未知字符。\n”);
%%
int-yywrap(无效)
{
返回1;
}
我得到了这部分的警告:
yylval.cVal=yytext代码>。怎么会出错呢?提前谢谢。您在联盟中设置了什么cVal?什么类型是yylval.cVal
?我们怎么能猜到呢?问题在于yylval.cVal
和yytext
的类型不兼容。由于yytext
是数组或指针(因此在赋值的RHS上,它被视为指针),因此可以推测yylval.cVal
是非指针类型。也许您想要yylval.cVal=yytext[0]代码>?或者,您可能真的需要复制字符串并修复yylval.cVal
的类型。可能的