C 将大型常量列表导出到Lua状态

C 将大型常量列表导出到Lua状态,c,lua,C,Lua,使用C99,我有一个从Lua脚本加载Lua表的游戏 技术方面没有问题,所有工作都按预期进行。但是,C核心使用许多常量来定义项类型等。脚本实际上提供了要加载的武器数据,为了清晰起见,应该使用相同的常量名称/值。 在C中,常数是定义项类型2之类的东西 所以,我的问题是:如何从C轻松地将一个长的ish~300定义的整数列表导出到Lua?不止一个脚本应该使用这个列表,虽然内存大小不是一个真正的问题,但我主要是为了方便 我已经想到了这些可能的解决方案,但不确定哪一个从长远来看会更好: 在Lua状态下手动创

使用C99,我有一个从Lua脚本加载Lua表的游戏

技术方面没有问题,所有工作都按预期进行。但是,C核心使用许多常量来定义项类型等。脚本实际上提供了要加载的武器数据,为了清晰起见,应该使用相同的常量名称/值。 在C中,常数是定义项类型2之类的东西

所以,我的问题是:如何从C轻松地将一个长的ish~300定义的整数列表导出到Lua?不止一个脚本应该使用这个列表,虽然内存大小不是一个真正的问题,但我主要是为了方便

我已经想到了这些可能的解决方案,但不确定哪一个从长远来看会更好:

在Lua状态下手动创建嵌套表,以处理所需脚本。 B手动创建一个包含常量的lua脚本,并使用它们在每个脚本中导入它。 那么,你认为最方便的方法是什么?正如在,方便的更新和使用在Lua方面的东西,所以mods可以很容易地编写。项目加载都是在启动时完成的,因此,如果它不是如中所示的超快速方法,则无关紧要,它不会延迟操作,只会延迟启动时间


哦,我正在使用Lua5.1,但如果它能让我的任务更轻松的话,我并不反对使用5.2。如果可能,也不反对以编程方式更新列表。

我将编写一个脚本,生成一个C头,其中所有整数常量都设置为枚举。另一个C文件,它有一个函数,可以通过添加所有这些常量的表,或者在全局范围内单独添加它们作为预定义的数字变量来改变Lua状态

在Lua状态下手动创建嵌套表,以处理所需脚本。 B手动创建一个包含常量的lua脚本,并使用它们在每个脚本中导入它。 你忘了:

C手动创建一个包含常量的Lua脚本,然后当我创建Lua_状态时,立即导入它。这样,每个使用它们的脚本都可以假定它已导入。
实际上,我通常会将此脚本放在可执行文件本身或由可执行文件加载的特殊文件中。

Ah因此,如果我只是在状态下运行tile,那么表应该保持良好状态?我想这也行得通,省去了修改者包括/导入额外内容的烦恼。我会试试这个方法,谢谢!注意:听起来你应该使用枚举;没有定义。@daumimator:为什么?定义可以完美地满足我的需要,IIRC所有枚举的大小至少为整数。它们可能有什么优势呢?依我看,C代码应该尽可能少地依赖预处理器。枚举不仅会给您更多的类型安全性,而且您还可以枚举它们。