我有一个全局变量:
const double myvar = 5.1;
现在,我正在将其转换为从Lua读取这些值。
然而,我不能简单地做:
const double myvar = lua_tonumber(L,1);
因为main()必须首先执行以启动Lua解释器等,但如果我之后声明myvar,它将不是全局的。
有没有办法实现一个从Lua获取值的全局const变量?
答案 0 :(得分:5)
const
的微妙后果只能由语言律师完全理解,但const 变量的基本思想是它的值在编译时指定。在有Lua解释器之前无法创建Lua值,这需要调用lua_open()
,这在运行时才能完成。所以没有,没有(安全,理智)的方法来拥有一个const
变量,其值由Lua决定。
答案 1 :(得分:0)
你可以像这样违反 constness:
*(double*) & myvar = lua_tonumber(L,1);
但这是一种非常糟糕的行为。
编辑:您可以执行以下操作,而不是声明常量变量:
static double myvar() {
// todo: check if global L is init
return lua_tonumber(L,1);
}
甚至是这样:
static double myvar() {
return 1.15;
}