你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1746|回复: 2

VC51中文标识符工具使用说明

[复制链接]

2

主题

1

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-8-1 11:42:54 | 显示全部楼层 |阅读模式
VC51中文标识符工具使用说明

一、 用途。
我们所使用的keil c51,是不支持中文标识符名的。但对于中国人来说,还是用中文作标识符比较符合思维习惯。VC51就是为了能实现此目的,而编写的一个小工具。

二、 使用方法。
1. 安装:此工具是开源的,用的是VC++编译环境。用户可自己编译。编译生成EXE文件,将keil安装目录下的“.\C51\BIN\c51.exe”重命名为“kc51.exe”。将编译后的文件复制到“.\C51\BIN\”下,并命名为“c51.exe”。
2. 使用:在编写keilC代码或H代码中,希望使用中文标识符名时,需要按照如下格式:“nameof(“变量名字符串”)”。这样,经过VC51工具的处理,就能正确编译了。
3. 举例:
https://www.stmcu.org.cn/file:///C:/DOCUME~1/wj0311/LOCALS~1/Temp/ksohtml/wps_clip_image-3246.png


三、 实现原理。
1. 先说一下c51的实现原理吧。c51是一个可以在命令提示符环境下通过命令调用的编译工具。其命令格式有两种:“C51 sourcefile [directives…]”或“C51 @commandfile”。我们使用的keil前台是通过后一种命令来实现的。commandfile是keil在编译前临时生成的文件,其内容就是真正要传递给c51的编译参数。c51处理结束后,把结果返回。我们就能看到编译是否成功,如果有错误,错误是出在哪了。是不是看着有点乱呢?还是举例吧。比如我们要编译“main.c”。
https://www.stmcu.org.cn/file:///C:/DOCUME~1/wj0311/LOCALS~1/Temp/ksohtml/wps_clip_image-29660.png

2. 下面就说说VC51是怎么实现的。VC51把自己伪装成C51,而把真正的C51更名为KC51。这样,前台发的命令就被VC51收到了,也就知道了要对谁进行编译。但是考虑到被编译的文件可能会调用到各头文件。所以本着“宁可枉杀一千,不叫一个漏网”的原则。VC51首先会把工程所在目录及子目录下的所有C文件和H文件,全部复制到工程目录下的“VC51FILS”文件夹中。当复制的同时,就会对文件中的中文标识符进行处理,具体怎么处理,我们在下一点中说。复制完就给KC51,也就是真正的C51发命令,不让它处理原文件了,而是处理我们复制后的文件。然后把KC51的结果返回给前台。说白了,就是在IDE前台和C51的通信之间进行“传话”,在传话的过程中,我们作手脚。
3. 下边就说怎么作手脚了。前文已经说了,我们的中文标识符必须按照“nameof(“变量名字符串”)”的格式。我们复制的时候,把所有出现这样格式的内容都替换掉。“nameof”还保留不变。“(“变量名字符串”)”都变成对应GB码的十六进制字符。这样,标识符就符合规范了,即,由字母数字和下划线组成,并且由字母或下划线开始。例如:“nameof("示例变量")”替换后就是“nameof2822CABEC0FDB1E4C1BF2229”。当然长度上肯定是增加了。所以不要超过规范规定的字数限制哦。
4. VC51C51返回的结果也作了一些处理。因为返回结果中会包含(不是每次都包含)我们复制后的路径。而IDE前台会根据路径来查找对应的文件。比如我们的文件语法有误,如果不对结果进行处理,我们在编辑环境中,双击错误信息,出来的就是复制后的文件,而不是原文件。所以我们把结果中出现的路径还还原为原路径,IDE前台就以为是原文件了。

四、 补充说明。
1. 本软件完全开源,用户可自行修改和使用。但由此可能引发的版权纠纷或其他后果,均由用户自负。因此建议仅供学习与交流使用,请勿用于商业用途。
2. 上面我们说到编译任何一个文件时,都会复制全部的C文件和H文件。其实还有一步详细的处理。原文件进行替换完毕,VC51会把替换结果与已经存在的文件作比较。若长度和CRC校验都符合,就不再写文件;否则才会写。这样能有效减少写的次数。
3. 工程中文件的结构,需要符合这样的格式,所有C文件和H文件都需要位于工程文件所在目录和子目录中。如果不在这范围内,则不能出现中文标识符。
4. 我发现的不完善的地方,真正的C51工具,在某个文件修改后,如果选择“build target”,KEIL只会对修改过的文件进行编译,不编译没修改过的。但在VC51下,KEIL对修改过的文件也“视而不见”。我猜测可能的原因是,C51编译后会产生一些存储相关信息的文件,而这些文件中的路径是我们作过手脚的路径,因此对原路径修改的文件不能正确识别。这一点也请大家共同研究探讨。
5. 可增加的功能。VC51返回的结果中,与中文标识符相关的内容,显示的会是我们替换后的形式。而这个形式是可再“翻译”回来的。目前没加这个功能,但理论上是可实现的。而且我想,就算没这功能,影响也不大。如果哪位愿意加上,我也是举双手双脚来赞成的。
6. 理论上,可用类似的方法,实现在MDK中使用中文标识符。我的直觉告诉我,那个叫“armcc.exe”的文件,就是编译器了。
7. 这工具是我利用业余时间所编,时间仓促,而且我对VC也不是太熟悉。软件中存在漏洞或待完善之处的可能还是蛮大的。代码中注释也不多,几乎没有。这个习惯可不好,不是程序员应有的。实在是时间不允许,请大家见谅。欢迎大家共同交流,使VC51有更好的改善,或是能编写出更好的工具来。我的联系方式写在最后了。

五、 我的联系方式:
1. 邮箱:sdkdwj@163.com,或QQ邮箱。
2. QQ342581660(当前昵称:基督徒)。

VC51.rar

下载

1.21 MB, 下载次数: 5, 下载积分: ST金币 -1

<
回复

使用道具 举报

15

主题

99

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-8-1 12:58:48 | 显示全部楼层

RE:VC51中文标识符工具使用说明

谢谢楼主分享!下载看看
回复 支持 反对

使用道具 举报

0

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-8-1 16:47:34 | 显示全部楼层

RE:VC51中文标识符工具使用说明

把所有出现这样格式的内容都替换掉,都变成对应GB码的十六进制字符,这样液晶评价器的标识符就符合规范了
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版