首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从“SymbolInfo*”转换为“YYSTYPE {aka int}”会丢失精度

从“SymbolInfo*”转换为“YYSTYPE {aka int}”会丢失精度
EN

Stack Overflow用户
提问于 2018-06-09 04:44:00
回答 1查看 286关注 0票数 1

在我的.l文件中,我有以下内容:

代码语言:javascript
复制
<some include files....>
#include "SymbolInfo.h"
#include "y.tab.h"

using namespace std;

int line_count = 1;
int TOTAL_ERROR = 0;

extern SymbolTable symbolTable;
extern FILE *yyin,*yyout;
extern YYSTYPE yylval;

<further declarations...>

%%

"int"    {
            SymbolInfo* s = new SymbolInfo(string(yytext),"INT");
            yylval = (YYSTYPE)s;
            return INT;
         }

<more patterns....>

%%

在我的.y文件中,我定义了YYSTYPE

代码语言:javascript
复制
#include "SymbolInfo.h"

int SymbolTable::id = 0;

#define YYSTYPE SymbolInfo*

但是当我尝试编译它时,它给出了以下错误:

代码语言:javascript
复制
Lexical Analyzer.l: In function ‘int yylex()’:
Lexical Analyzer.l:162:27: error: cast from ‘SymbolInfo*’ to ‘YYSTYPE {aka int}’ loses precision [-fpermissive]
         yylval = (YYSTYPE)res;
                       ^

我的问题是,为什么在将YYSTYPE定义为SymbolInfo*之后,它仍然会给出编译错误?如何处理此错误?

  1. SymbolInfo Code
  2. Parser Code
  3. Lexer Code
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50768162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档