当前位置: 代码迷 >> 其他开发语言 >> lua源码中l_mathop的功用
  详细解决方案

lua源码中l_mathop的功用

热度:100   发布时间:2016-05-02 03:59:39.0
lua源码中l_mathop的作用

/*
@@ l_mathop allows the addition of an 'l' or 'f' to all math operations
*/
#define l_mathop(x) (x)

static int math_abs (lua_State *L) {
  lua_pushnumber(L, l_mathop(fabs)(luaL_checknumber(L, 1)));
  return 1;
}


如上代码,不明白为何要调用一层l_mathop,直接fabs不就可以了吗?
------解决方案--------------------
注释里说的很清楚了。如果仔细读过Programming in Lua,就会注意到Lua的Number类型是可以定制的(默认是double类型,需要使用fabs函数),如果你修改了Number的类型,那么调用math库时,你就应该调用相应的fabsl(long double)或fabsf ( fload ) 函数,也就是
#define l_mathop(x)        (x ## l) // for long double 

#define l_mathop(x)        (x ## f) // for float
  相关解决方案