帮助找到C示例代码以读取lua命令行参数

时间:2010-09-19 08:41:04

标签: c lua sample

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

1 个答案:

答案 0 :(得分:5)

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堆栈上,以便脚本也可以通过...关键字将其作为可变参数访问脚本的顶级函数。 / p>

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

我打开了一个重要的整体设计问题,即允许模块依赖于命令行参数是否是一个好的设计。我可以看到,提供参数解析的模块可能希望以这种方式执行操作,但即便如此,我还是建议选项解析器由其调用者传递给argments,而不是直接从全局读取它们。这样可以更容易地从环境变量或配置文件中检索参数,例如。