Lua中文语言编程源码-第十节,更改ltm.c 元格操作函数, 使Lua加载中文库关键词(执行诸如__索引,__新索引,__加等元表操作)

源码已经更新在CSDN的码库里:

git clone https://gitcode.com/funsion/CLua.git


在src文件夹下的ltm.c  表格操作函数,此模块是C语言编写的,是Lua语言中的一个库文件,主要用来提供元表操作的功能。
 该库提供了许多函数,可以用来执行诸如__索引,__新索引,__加等Lua中的元表操作。

因技术问题,只保留中文版等的luaT_eventname[]数组列表。

原始的代码为:

void luaT_init (lua_State *L) {static const char *const luaT_eventname[] = {  /* ORDER TM */"__index", "__newindex","__gc", "__mode", "__len", "__eq","__add", "__sub", "__mul", "__mod", "__pow","__div", "__idiv","__band", "__bor", "__bxor", "__shl", "__shr","__unm", "__bnot", "__lt", "__le","__concat", "__call", "__close"};int i;for (i=0; i<TM_N; i++) {G(L)->tmname[i] = luaS_new(L, luaT_eventname[i]);luaC_fix(L, obj2gco(G(L)->tmname[i]));  /* never collect these names */}
}

更改成以下代码:

/* 初始化操作符和事件名称 */
void luaT_init (lua_State *L) {/* 定义操作符和事件名称的数组。注:该数组必须按照特定的顺序排列。包括了Lua中各种特殊方法的名称。 */static const char *const luaT_eventname[] = {  /* "__index", "__newindex","__gc", "__mode", "__len", "__eq","__add", "__sub", "__mul", "__mod", "__pow","__div", "__idiv","__band", "__bor", "__bxor", "__shl", "__shr","__unm", "__bnot", "__lt", "__le","__concat", "__call", "__close",   中文关键字 */"__索引","__新索引",                             "__垃圾回收", "__模式", "__长度", "__等于","__加", "__减", "__乘", "__模", "__幂","__除", "__整除","__位与", "__位或", "__位异或", "__左移", "__右移","__负", "__位非", "__小于", "__小于等于","__连接", "__调用", "__关闭"};int i;

目前因技术原因,元表的操作只保留了中文 函数可以加载,如果你可以复制英文源代码,需要搜索“__”来查找并替换成中文的关键字,才可正常执行。

更改完之后,同样需要重新编译Lua的源码,实现以上列出的关键词的中文化。

注意,在Window系统下编译Lua, 最好将所有Lua的源码,重新保存成ANSI格式的文件,刚下载的默认的源码会是UTF-8格式的。

这个事情说三遍,

1,不然就会出现,Window下的UTF-8源码可编译,但Shell里的中文输出会乱码。
2,要不然就是Window的ANSI源码不可编译(假如你没做以上步骤),
3,如果是用ANSI格式的源码编译的Lua.exe,对应的,你在Window下写的Lua程序也是需要保存成ANSI格式的。这样就可以在Shell里输出正确的中文显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/821476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音小店新店铺起飞式玩法,这几步一定要做好,前期很重要

大家好&#xff0c;我是电商笨笨熊 进入抖音小店后不知道该怎么操作&#xff0c;不清楚如何让新店快速起店&#xff1b; 今天我们就来聊聊新店铺快速起店的几个关键步骤&#xff0c;新手玩家一定要按照流程去做。 第一步&#xff1a;店铺搭建 小店开通之后不要着急选品上架&…

OpenAI 选择东京作为其首个亚洲办事处

新办事处旨在促进与日本政府、当地企业和研究机构的合作&#xff0c;开发适合日本独特需求的人工智能工具。 之所以选择东京作为OpenAI在亚洲的第一家企业&#xff0c;是因为这里拥有全球领先的技术、致力于服务的文化和创新的社区。 "OpenAI 首席执行官 Sam Altman 解释…

MGRE环境下的ospf实验

MGRE环境下的ospf实验 一.拓扑图 二.实验步骤 1.分配各路由网段IP [R1]int g 0/0/0 [R1-GigabitEthernet0/0/0]ip address 16.0.0.1 24 [R1-GigabitEthernet0/0/0]int g 0/0/1 [R1-GigabitEthernet0/0/1]ip address 116.0.0.1 24[R2]int g 0/0/0 [R2-GigabitEthernet0/0/0]…

Docker+Uwsgi部署Django项目

在之前的文章中&#xff0c;已经给大家分享了在docker中使用django自带的命令部署项目&#xff0c;这篇文章主要讲解如何使用uwsgi部署。 1. 在Django项目的根目录下新建Dockerfile文件 #Dockerfile文件 # 使用 Python 3.9 作为基础镜像 FROM python:3.9# 设置工作目录 WORKDI…

static辨析

静态变量 局部全局非静态局部作用域&#xff0c;只在函数执行期间存在全局作用域&#xff0c;作用域为所有的源文件&#xff0c;但是在其他不包含全局变量定义的源文件中需要用extern关键字再次声明静态局部作用域&#xff0c;只被初始化一次&#xff0c;自从第一次被初始化直…

随机游走的艺术-图嵌入表示学习

图嵌入引入 机器学习算法&#xff1a; 厨师 样本集&#xff1a; 食材 只有好的食材才能做出好的饭菜 我们需要把数据变成计算机能够读懂的形式&#xff08;将数据映射成为向量&#xff09; 图嵌入概述 传统图机器学习 图表示学习 自动学习特征&#xff0c;将…

初学python记录:力扣924. 尽量减少恶意软件的传播

题目&#xff1a; 给出了一个由 n 个节点组成的网络&#xff0c;用 n n 个邻接矩阵图 graph 表示。在节点网络中&#xff0c;当 graph[i][j] 1 时&#xff0c;表示节点 i 能够直接连接到另一个节点 j。 一些节点 initial 最初被恶意软件感染。只要两个节点直接连接&#x…

提升测试效率都有哪些具体手段?

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

uncloud的查询数据库的条件要和shema中写的一致,不然会报错

为什么uni-app中的database中的有些文件在hbuilder中可以看到&#xff0c;在vscode中看不到&#xff1f; uni-starter微信登录后查数据库db.collection后会提示没有权限 貌似非管理员都不能访问 uni-starter微信登录后查数据库db.collection(opendb-poi).aggregate()后会提示…

计算机网络(六)应用层

应用层 基本概念 服务器端&#xff08;Server&#xff09;&#xff1a; 服务器是网络中提供服务的计算机或软件程序。服务器通常具有更高的性能、更大的存储空间和更高的带宽&#xff0c;用于提供各种服务&#xff0c;如文件存储、数据库管理、Web托管、电子邮件传递等。服务…

什么是主数据?

主数据定义 主数据指满足组织跨部门业务协同需要的、反映核心业务实体状态属性的基础信息。主数据具有以下特征: (1)跨越部门:主数据是满足跨部门业务协同需要的&#xff0c;是各个部门在开展业务过程中都需要的数据&#xff0c;是所有部门及其业务过程的“最大公约数据”: …

共享桌面,3分钟自己实现一个吧,还能听见麦克风声音哦

前言 关于【SSD系列】&#xff1a; 前端一些有意思的内容&#xff0c;旨在3-10分钟里&#xff0c; 500-1000字&#xff0c;有所获&#xff0c;又不为所累。 共享桌面程序&#xff0c;哇&#xff0c;高大尚耶&#xff01;其实不然&#xff0c;让我带你3分钟实现桌面共享程序&am…

LD3320语音模块开发以及未来拿到其他模块的开发方式

当我们拿到一块模块进行开发的时候&#xff0c;一定要拿到配套的使用手册&#xff0c;不然在短时间内根本下不了手 一、使用source Insight来阅读源码 1.建立文件夹 2. 在source Insight放入该文件 3.添加源码 4.解决Source Insight乱码的问题 5.让各个代码模块之间有关联 二、…

uni-app中页面生命周期与vue生命周期的执行顺序对比

应用生命周期 uni-app 支持如下应用生命周期函数&#xff1a; 函数名说明平台兼容onLaunch当uni-app 初始化完成时触发&#xff08;全局只触发一次&#xff09;&#xff0c;参数为应用启动参数&#xff0c;同 uni.getLaunchOptionsSync 的返回值onShow当 uni-app 启动&#x…

Python零基础从小白打怪升级中~~~~~~~Python面向对象(二)

第九节&#xff1a;Python面向对象——继承和多继承 一、继承 Python面向对象的继承指的是多个类之间的所属关系&#xff0c;即子类默认继承父类的所有属性和函数。 在Python中&#xff0c;所有类默认继承object类&#xff0c;object类是顶级类或基类&#xff1b; 1、单继承…

Node.js安装与配置:构建强大的JavaScript后端应用程序

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;它使得我们可以使用JavaScript构建高性能的后端应用程序。无论你是初学者还是有经验的开发者&#xff0c;了解如何正确安装和配置Node.js都是非常重要的。本文将介绍如何安装和配置Node.js&#xff0c;以及一…

Linux - 线程

目录 一.Linux线程的概念 1.1什么是线程 1.2 线程的优点 1.3 线程的缺点 1.4 线程异常 1.5 线程用途 二. Linux进程VS线程 2.1 进程和线程 三. Linux线程控制 3.1 POSIX线程库 3.2 创建线程 3.3 进程ID和线程ID 3.4 线程ID及进程地址空间布局 3.5 线程终止 3.6 线…

实战小项目 | ESP32-S3和ESP32-C3通过ESP-Mesh-Lite组网 温湿度传感器案例

传统Wi-Fi网络所有终端设备都需要直接与路由器相连&#xff0c;这使得Wi-Fi的覆盖区域受到路由器位置的限制&#xff0c;可接入终端设备的数量也受到路由器容量的限制。而乐鑫ESP-Mesh-Lite Wi-Fi组网方案&#xff0c;所有终端设备都可以与相邻设备连接&#xff0c;摆脱了对路由…

移动硬盘盒支持PD充电:优势解析与实际应用探讨

随着科技的飞速发展&#xff0c;数据存储和传输的需求日益增长&#xff0c;移动硬盘盒作为便携式存储设备的重要载体&#xff0c;其功能和性能也在不断提升。近年来&#xff0c;越来越多的移动硬盘盒开始支持PD&#xff08;Power Delivery&#xff09;充电技术&#xff0c;这一…

9.Hexo通过partial文件传值和改变CSS属性

partials 基本上是可以在自己的HTML文件或.ejs文件中定义网站中不同组件的方法 如果想要为网站定义一个标头&#xff0c;这个标头将会很好地出现在网站的每个页面上 用partials可以创建一个.ejs文件&#xff0c;可以将该标头的所有代码存储在该文件中&#xff0c;然后当想要在…