#define之后:Expression必须是指向完整对象类型的指针

时间:2017-03-11 11:42:27

标签: c++

我有以下c ++代码:

#define MATH_FASTCALL(name, fname) \
static int math_ ## name ## _precall (lua_State *L, StkId func, int nresults) { \
  StkId arg1 = func + 1; \
  llvm_arg_tonumber(L, arg1, 1); \
  setnvalue(func, fname(nvalue(arg1))); \
  L->ci--; \
  L->top = func + 1; \
  L->base = L->ci->base; \
  return PCRC; \
fallback: \
  return luaD_precall_c(L, func, nresults); \
}

MATH_FASTCALL(abs, fabs)

当我尝试在Visual Studio 14 2015中编译它时,它在MATH_FASTCALL的行中出错:

  

表达式必须是指向完整对象类型的指针

这段代码有什么问题?

1 个答案:

答案 0 :(得分:0)

错误消息使其听起来像宏正在解引用指向不完整类型的指针。在调用宏之前,请确保lua_Statelua_State::ci的类型已定义(不仅仅是声明)。