繁体   English   中英

与typedef枚举相关的错误

[英]typedef enum related error

In file included from /home/epuser/ajayku/final_test/qemu/qemu-1.6.0.ajay /tcg/tcg.h:117:0, In file included from /home/epuser/ajayku/final_test/qemu/qemu-1.6.0.ajay /tcg/tcg.h:117:0,

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.h”调用“ tcg-op.h”的代码如下

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

在枚举中包含“ tcg-op.h”时,将在枚举中复制“ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM