从Lua初始化的常量双精度变量。

我有一个全局变量:

const double myvar = 5.1;

现在,我想要从 Lua 中读取这些值。

但是,我不能简单地这样做:

const double myvar = lua_tonumber(L,1);

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

有没有办法实现获取其值来自 Lua 的全局常量变量?

原文链接 https://stackoverflow.com/questions/955418

点赞
stackoverflow用户108130
stackoverflow用户108130

你可以这样 违反 constness:

*(double*) & myvar = lua_tonumber(L,1);

但这是一种非常糟糕的做法。

编辑:而不是声明 const 变量,你可以这样做:

static double myvar() {
 // todo: check if global L is init
 return lua_tonumber(L,1);
}

甚至可以这样做:

```` static double myvar() { return 1.15; } ```

2009-06-05 11:43:33
stackoverflow用户41661
stackoverflow用户41661

const 的微妙影响只有语言律师才能完全理解,但一个 const 变量 的基本概念是它的值在编译时指定。Lua 值直到有 Lua 解释器才能被创建,而这需要调用 lua_open(),这直到运行时才能完成。因此,没有(安全、理智的)方法使一个 const 变量的值由 Lua 确定。

2009-06-05 22:02:56