Lua中文语言编程源码-第四节,更改linit.c初始化库函数, 使Lua加载中文库关键词(与所有的基础库相关)

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

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

在src文件夹下的linit.c初始化库的函数,用于lua.c和其他客户端。

增加加载中文库宏名列表,保留英文库宏名列表。

原始的代码为:
static const luaL_Reg loadedlibs[] = {{LUA_GNAME, luaopen_base},{LUA_LOADLIBNAME, luaopen_package},{LUA_COLIBNAME, luaopen_coroutine},{LUA_TABLIBNAME, luaopen_table},{LUA_IOLIBNAME, luaopen_io},{LUA_OSLIBNAME, luaopen_os},{LUA_STRLIBNAME, luaopen_string},{LUA_MATHLIBNAME, luaopen_math},{LUA_UTF8LIBNAME, luaopen_utf8},{LUA_DBLIBNAME, luaopen_debug},{NULL, NULL}
};
更改成以下代码:
static const luaL_Reg loadedlibs[] = {{LUA_GNAME, luaopen_base},        /* Lua基础库 */{LUA_LOADLIBNAME, luaopen_package}, /* Lua包加载库 */{LUA_LOADLIBNAME_C, luaopen_package}, {LUA_COLIBNAME, luaopen_coroutine}, /* Lua协程库 */{LUA_COLIBNAME_C, luaopen_coroutine}, {LUA_TABLIBNAME, luaopen_table},    /* Lua表库 */{LUA_TABLIBNAME_C, luaopen_table},    {LUA_IOLIBNAME, luaopen_io},        /* Lua I/O库 */{LUA_IOLIBNAME_C, luaopen_io},      {LUA_OSLIBNAME, luaopen_os},        /* Lua操作系统库 */{LUA_OSLIBNAME_C, luaopen_os},      {LUA_STRLIBNAME, luaopen_string},   /* Lua字符串库 */{LUA_STRLIBNAME_C, luaopen_string}, {LUA_MATHLIBNAME, luaopen_math},    /* Lua数学库 */{LUA_MATHLIBNAME_C, luaopen_math},  {LUA_UTF8LIBNAME, luaopen_utf8},    /* Lua UTF-8库 */{LUA_DBLIBNAME, luaopen_debug},     /* Lua调试库 */{LUA_DBLIBNAME_C, luaopen_debug},   {NULL, NULL}                         /* 结束标志 */
};

为了保证中英文宏名都可以加载,以便你可以复制英文原码来进行更改。所以保留了英文的宏名列表,这样就只能使用两个库的宏名表,

LUA_COLIBNAME, luaopen_coroutine 英文协程宏名,协程加载库名,

LUA_COLIBNAME_C, luaopen_coroutine 中文协程宏名,协程加载库名,

其实它们都是加载同样的库名,算是加载了2次,以Lua内部算法,应该只会加载一次。

更改完之后,同样需要重新编译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/750290.shtml

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

相关文章

​​SQLiteC/C++接口详细介绍之sqlite3类(十)

返回目录:SQLite—免费开源数据库系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(九) 下一篇:​​SQLiteC/C接口详细介绍之sqlite3类(十一) 30.sqlite3_enable_load_extension&#x…

venv uvicorn python 虚拟服务器外网无法访问

python -m venv .venv source ./.venv/bin/activate pip install -r requirements.txt ./run.sh source ./.venv/bin/activate uvicorn main:app --reload 虚拟web服务器外网访问控制台启动命令用以下代码启动 uvicorn main:app --host 0.0.0.0 --port 8501 --reload 启动到后…

生命周期模型

1. 编码修补模型(Code-and-Fix Model) 定义:这是一种非正式的软件开发过程,开发者开始编写代码,然后在发现问题时修复它们,没有明确的需求分析和设计阶段。特征: 开始编码而不进行大量的设计或…

【Git】本地仓库关联远程仓库

Git 本地项目关联远程仓库 本地 本地已有项目 ● 项目 07.GitLocalTest 包含有一个js ○ test.js 远程仓库 ● 远程仓库地址 ○ https://github.com/Sonnenlicht77/gitTest.git ○ 仓库只有一个 readme.md 关联 1.本地 1.1 本地仓库 ● git init ● git add . ● gi…

掌握人工智能:人工智能工程师必须了解的顶级编程语言

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

单片机FLASH深度解析和编程实践(下)

本篇文章将同大家分享单片机FLASH编程的相关寄存器和寄存器操作及库函数操作。本篇文章依然以STM32单片机为例进行解析。有关FLASH的基本原理和实现方法,大家可以参考上一篇文章:单片机FLASH深度解析和编程实践(上)-CSDN博客 目录…

探索设计模式的魅力:探索发布-订阅模式的深度奥秘-实现高效、解耦的系统通信

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,并坚持默默的做事。 探索发布-订阅模式的深度奥秘:实现高效、解耦的系统通信 文章目录 一、案例场景&am…

Python深度学习之路:TensorFlow与PyTorch对比【第140篇—Python实现】

Python深度学习之路:TensorFlow与PyTorch对比 在深度学习领域,TensorFlow和PyTorch是两个备受青睐的框架,它们为开发人员提供了强大的工具来构建和训练神经网络模型。本文将对这两个框架进行对比,探讨它们的优势和劣势&#xff0…

macOS上基于httpd-dav搭建WebDav服务

文章目录 配置 Apache httpd修改 ServerName启动验证 httpd 服务启用 Dav 扩展服务配置 配置 httpd 扩展 Dav 服务设置共享目录文件夹配置 DavLockDB 目录创建 WebDAV 访客用户 httpd-dav.conf 主要改动部分BasicDigest共享多个目录 授予 httpd 完全磁盘访问权限验证更新配置重…

自适应日落动态卡通动画404页面模板

源码介绍 自适应日落动态卡通动画404页面模板,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面 下载地址 自适应日落动态卡通动画404页面模板

Java高级互联网架构师之路:排查当前JVM错误的步骤

程序 这个程序是有问题的,我们通过一些命令来分析这个程序究竟是哪里出了问题。首先把当前的程序通过SSH工具传输到centos系统中,之后我们就可以在linux环境下编译和执行。 注意一点:上面类的名字是Z,但是在linux环境下,我们将其改为了AA,并且文件名改为了AA,所以文章下…

常用图像滤波器,图像增强

滤波器 滤波器在图像处理中有各种各样的应用,它们可以用于去除噪声、平滑图像、增强图像特征等。以下是一些常见的滤波器及其主要应用: 均值滤波器(Mean Filter): 用于去除高斯噪声或均匀噪声。 平滑图像&#xff0…

掌握Go语言:深入理解Go语言中的数组和切片,灵活处理数据的利器(16)

Go语言中的数组和切片是常用的集合类型,它们在处理数据时提供了不同的特性和灵活性。本文将深入探讨数组和切片的使用方法、特性、实例以及应用场景。 1. 数组和切片简介 在Go语言中,数组和切片都是集合类的类型,用于存储相同类型的元素。它…

Python实战:Python内置函数与常用标准库介绍

Python是一种广泛使用的高级编程语言,其内置函数和标准库为开发者提供了丰富的功能。本文将详细介绍Python的内置函数和常用标准库,包括数据类型、输入输出、文件操作、网络编程等。 1. 引言 Python的内置函数和标准库为开发者提供了丰富的功能&#x…

计算机网络----计算机网络的基础

目录 一.计算机网络的相关概念 二.计算机网络的功能 三.计算机网络的发展 四.计算机网络的组成 五.计算机网络的分类 六.计算机的性能指标 1.速率 2.带宽 3.吞吐量 4.时延 5.时延带宽积 6.往返时延RTT 7.利用率 七.计算机的分层结构 八.ISO/OSI参考模型 九.OSI…

2024云服务器安装MySQL,连接Navicat保姆级教程

文章目录 yum方式安装指定版本mysqlNavicat连接mysql,并建表 yum方式安装指定版本mysql 使用绝对路径cd /etc/yum.repos.d/进入该目录使用文本编辑器(如 vim、nano 或 gedit)创建 mysql57-community.repo 文件,在编辑页面粘贴下方…

软考80-上午题-【面向对象技术3-设计模式】-结构型设计模式03

一、外观模式 1-1、意图 为子系统中的一组接口提供一个一致的界面。 Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 1-2、结构 Facade 知道哪些子系统类负责处理请求:将客户的请求代理给适当的子系统对象。Subsvstem classes …

Ansible playbook格式 语法 Ansible playbook格式入门演示 基础了解

目录 Ansible playbook格式简介实例运行结果 Ansible playbook格式简介 playbook由YMAL语言编写。YAML( /ˈjməl/ )参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822,Clark Evans在2001年5月在首次发表了这种语言…

macOS 安装 NetLogo 6.4.0

netlogo 下载地址 NetLogo-6.4.0.dmg参考 netlogo 官网

vue3之带参数的动态路由

在应用中&#xff0c;可以使用<router-link> 内置组件或 $router.push 方法来导航到带参数的路由。 定义路由 // 引入 Vue 和 Vue Router import { createRouter, createWebHistory } from vue-router; // 引入组件 import Home from ../views/Home.vue; import …