Const双重从Lua初始化

时间:2009-06-05 11:28:01

标签: lua const

我有一个全局变量:

const double myvar = 5.1;

现在,我正在将其转换为从Lua读取这些值。

然而,我不能简单地做:

const double myvar = lua_tonumber(L,1);

因为main()必须首先执行以启动Lua解释器等,但如果我之后声明myvar,它将不是全局的。

有没有办法实现一个从Lua获取值的全局const变量?

2 个答案:

答案 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;
}