<分区>
我正在寻找 C 中读取 Lua 命令行参数的示例代码。 有帮助吗?
<分区>
我正在寻找 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/