从 Lua 初始化的 const double

发布于 2024-07-23 10:32:29 字数 294 浏览 3 评论 0原文

我有一个全局变量:

const double myvar = 5.1;

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

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

const double myvar = lua_tonumber(L,1);

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

有什么方法可以实现从 Lua 获取其值的全局 const 变量吗?

I have a global variable:

const double myvar = 5.1;

Now, I'm converting this to read these values from Lua.

However, I can't simply do:

const double myvar = lua_tonumber(L,1);

Since main() must first execute to start the Lua intepreter etc., but if I declare myvar afterwards, it will not be global.

Is there any way to do achieve a global const variable which takes it's value from Lua?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷月断魂刀 2024-07-30 10:32:29

const 的微妙后果只有语言律师才能完全理解,但 const 变量 的基本思想是它的值在编译时指定。 只有存在 Lua 解释器才能创建 Lua 值,这需要调用 lua_open(),而这只有在运行时才能完成。 所以,没有(安全、理智)的方式让一个const变量的值由Lua决定。

The subtle ramifications of const can be fully understood only by language lawyers, but the basic idea of a const variable is that its value is specified at compile time. Lua values cannot be created until there is a Lua interpreter, which requires calling lua_open(), which cannot be done until run time. So no, there is no (safe, sane) way of having a const variable whose value is determined by Lua.

扭转时空 2024-07-30 10:32:29

您可以像这样违反常量:

*(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;
}

You can violate constness like this:

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

but it's a -very- bad practice.

Edit: Instead of declaring const variables you can do this:

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

or even this:

static double myvar() {
 return 1.15;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文