我有以下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的行中出错:
表达式必须是指向完整对象类型的指针
这段代码有什么问题?
答案 0 :(得分:0)
错误消息使其听起来像宏正在解引用指向不完整类型的指针。在调用宏之前,请确保lua_State
和lua_State::ci
的类型已定义(不仅仅是声明)。