我正在寻找C中的示例代码,它读取Lua命令行参数。 有什么帮助吗?
答案 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,而不是直接从全局读取它们。这样可以更容易地从环境变量或配置文件中检索参数,例如。