2014-04-04 48 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