现在正在寻找 lua 上的几个线程,发现这篇文章非常有趣:
Alert messages for lua functions
我正在尝试对我的代码使用相同的宏,并对操作进行一些更改:
#define GET_INTEGER_WARN(ind, fld) do { \
lua_getfield(L, ind, #fld); \
p->##fld = lua_tointeger(L, -1); \
\
if (!lua_isinteger(L, -1)) \
printf(#fld" allows only numbers;"); \
} while (0)
我的代码:
lua_getfield(L, -1, "wooxy_value");
p->wooxy_value = lua_tointeger(L, -1);
lua_getfield(L, -2, "wooxy_type");
p->wooxy_type = lua_tointeger(L, -1);
我按照作者的解释更改了我的代码,因此:
GET_INTEGER_WARN(-1, "wooxy_value");
GET_INTEGER_WARN(-2, "wooxy_type");
更多宏错误发生在以下位置:
p->##fld = lua_tointeger(L, -1); \
编译错误:error c2059 syntax error 'string'
我做了一个测试,用 p->wooxy_value
替换了函数 p->##fld
并且成功了。
更多这种方式只适用于一个函数,有人能告诉我宏有什么问题吗?即使使用整数值也会出现该消息。
最佳答案
使用字符串文字没有意义:
GET_INTEGER_WARN(-1, "wooxy_value");
结果
p->"wooxy_value" = lua_tointeger(L, -1);
去掉引号:
GET_INTEGER_WARN(-1, wooxy_value);
关于c - lua中宏的使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672963/