【发布时间】:2021-12-17 15:05:38
【问题描述】:
我在 µC 项目中使用 LUA 作为嵌入式语言,因此资源有限。为了节省一些周期和内存,我总是只使用基于索引的表访问 (table[1]) 而不是基于哈希的访问 (table.someMeaning = 1)。这样可以节省大量内存。
这种方法的明显缺点是代码中的幻数。
类似 Cpp 的预处理器将有助于将数字替换为命名常量。
有没有好的方法来实现这一点? LUA 本身的预处理器,加载脚本并编辑块然后加载它是一个变体,但我认为这首先会耗尽资源......
【问题讨论】:
-
你可以使用
GNU M4,这是一个通用的预处理器,非常容易使用并且非常适合你的用例。另一种解决方案可能是编写一个小脚本,用连续的sed文本替换替换您的 TOKENS。 -
GNU M4的第一个例子很有趣linuxjournal.com/article/…。 -
我认为最简单的方法是使用 cpp for lua ;-)
-
这可能也是个好主意,因为您不需要其他工具。
-
其实也有
Lua通用的预处理器,比如lua-users.org/wiki/SlightlyLessSimpleLuaPreprocessor的那个
标签: lua lua-table magic-constants