Lua 与C/C++ 交互系列:注册枚举enum到Lua Code中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Lua 与C/C++ 交互系列:注册枚举enum到Lua Code中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1201字,纯文字阅读大概需要2分钟。
内容图文
在Lua Code中注册C/C++的枚举非常容易,就像注册全局变量一样。我们使用枚举名称作为命名空间,来避免注册的枚举发生冲突。注册的枚举存储在全局环境(线程环境)中。
当在Lua Code中访问枚举时,通过名称来访问对应的值。
sample_9.cpp c++代码如下:
//在Lua Code中注册的enum,为了避免冲突,以名称作为enumTable来存储 enum Week { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, }; //定义宏用来方便使用设置键值 #define LUA_ENUM(L, val) lua_pushliteral(L, #val); lua_pushnumber(L, val); lua_settable(L, -3) void register_enum(lua_State* L) { //创建一个enumTable,用于存储Enum的所有枚举。通过枚举名称=枚举值 lua_newtable(L); //设置 enumTable["Monday"]=Monday LUA_ENUM(L, Monday); LUA_ENUM(L, Tuesday); LUA_ENUM(L, Wednesday); LUA_ENUM(L, Thursday); LUA_ENUM(L, Friday); LUA_ENUM(L, Saturday); LUA_ENUM(L, Sunday); //把enumTable存在在_G 全局环境(线程环境)中,以枚举名称作为键 lua_setglobal(L,"Week"); } int main(int argc, char *argv[]) { lua_State* L = lua_open(); luaL_openlibs(L); register_enum(L); luaL_dofile(L, "sample_9.lua"); lua_close(L); return 0; }sample_9.lua Lua Code代码如下:
local Week=_G["Week"] print(Week) print(Week.Monday) print(Week.Tuesday) print(Week.Wednesday) print(Week.Thursday) print(Week.Friday) print(Week.Saturday) print(Week.Sunday)
输出结果:
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/sunning9001/article/details/46659163
内容总结
以上是互联网集市为您收集整理的Lua 与C/C++ 交互系列:注册枚举enum到Lua Code中全部内容,希望文章能够帮你解决Lua 与C/C++ 交互系列:注册枚举enum到Lua Code中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。