2014-04-04 50 views
0

In file included from /home/epuser/ajayku/final_test/qemu/qemu-1.6.0.ajay/tcg/tcg.h:117:0,的typedef枚举相关的错误

from /home/epuser/ajayku/final_test/qemu/qemu-1.6.0.ajay/exec.c:29: 
`/home/epuser/ajayku/final_test/qemu/qemu-1.6.0.ajay/tcg/tcg-op.h:27:1: error: expected` `identifier before ‘int’` 

>和 “TCG-op.h” 文件的初始含量为

int gen_new_label(void); 

static inline void tcg_gen_op0(TCGOpcode opc) 

{ 
    *tcg_ctx.gen_opc_ptr++ = opc; 
} 

static inline void tcg_gen_op1_i32(TCGOpcode opc, TCGv_i32 arg1) 
{ 
    *tcg_ctx.gen_opc_ptr++ = opc; 
    *tcg_ctx.gen_opparam_ptr++ = GET_TCGV_I32(arg1); 
} 

和代码,其中“TCG-OP。 h“被称为”tcg.h“如下

typedef enum { 
#define DEF(name, oargs, iargs, cargs, flags) INDEX_op_ ## name, 
#include "tcg-op.h" 
#undef DEF 
NB_OPS, 
} TCGOpcode; 
+1

无法理解你的代码?为什么在enum中包含'header'?还在'enum'宏? –

+0

其实它不是mu代码......它是“tcg.h”的源代码,当你需要从源代码安装QEMU时,它是一个文件。 – Ajay

回答

0

如果在枚举中包含“tcg-op.h”,则在“enum”中复制“tcg-op.h”所需的内容。

tcg-op.h没有错误,但是当你把它包含在枚举中时,编译器会震惊什么int gen_new_label(void);在枚举内部进行并抛出错误。

它应该工作,如果你这样做 -

#include "tcg-op.h" 
#define DEF(name, oargs, iargs, cargs, flags) INDEX_op_ ## name, 
typedef enum { 
     DEF(ARG1, ARG2, ARG3, ARG4, ARG5) 
     NB_OPS, 
} TCGOpcode; 
#undef DEF 
+0

感谢Vicky的回答,但是这个错误是由于另一个问题造成的 – Ajay