c - 帮助定位C示例代码读取lua命令行参数

标签 c lua sample

<分区>

我正在寻找 C 中读取 Lua 命令行参数的示例代码。 有帮助吗?

最佳答案

Lua 解释器设计为嵌入到托管应用程序中。应用程序有责任通过某种适当的机制将任何命令行参数(或应用程序的等效参数)传递给脚本。

当用作独立语言时,托管应用程序是可执行文件 lua,由 lua.c 实现在 Lua 源代码分发中。

开始时,lua 将所有命令行参数以数组的形式打包到全局变量 arg 中。 arg[0] 包含正在执行的脚本文件的名称,arg[1] 包含在命令行上传递给该脚本的任何参数。它还将命令行的余额存储在 arg 表中的负索引处。对于命令 lua sample.lua a b c 那么数组就像赋值一样构造

arg = { [-1]="lua", [0]="sample.lua", "a", "b", "c" }

在脚本执行之前执行。此分配由函数 getargs() 执行,这还将脚本参数留在 Lua 堆栈上,以便脚本也可以通过 ... 关键字将它们作为脚本顶级函数的可变参数访问。

如果脚本中使用的任何模块需要访问命令行参数,那么它很可能会从全局 arg 表中进行访问。这将决定模块是用 C 还是 Lua 编写的。访问全局 arg 要求模块的环境没有被更改以防止访问全局变量。

我已经将重要的总体设计问题悬而未决,即允许模块依赖于命令行参数是否是好的设计。我可以看到提供参数解析的模块可能想要那样做,但即便如此我还是建议选项解析器由其调用者传递参数而不是直接从全局读取它们。例如,这使得从环境变量或配置文件中检索参数变得更加容易。

关于c - 帮助定位C示例代码读取lua命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3745047/

相关文章:

c - C语言中的循环中断

c - !0 在 C89 中保证为 1?

c - 左值需要作为一元 '&' 操作数

lua - Lua 中的 math.pow 替代方案?

lua - 要求子目录中的 LuaJIT 模块会覆盖父目录中的同名模块

indexing - 我可以强制 Lua 的表索引从零开始吗?

r - 如何在单个密度图中获得多条线,并具有更正的比例?

c - 在嵌入式系统中,周界锁定主要是什么?

hadoop - 在Hive的存储桶表中增量加载数据?

r - 使用 R 中的重复数据进行多重假设检验