如何读取数组的c文件,在内存中映射成真正的数组

2020-01-01 17:48发布

介绍下问题提出背景,我的程序中有个90多k的数组,70%以上都是连续的0,我打算用rle算法压缩,估计降低一半以上大小是可行的

初步思路是搞个上位机的命令行程序,读取这个数组c文件,压缩后生成一个bin文件,mdk支持在编译前运行命令,然后mdk装载这个bin文件生成最后的程序文件,整个过程都会自动完成

现在事情还没开始就遇上一个麻烦事,如何读取数组c文件,因为这个3维数组使用嵌套大括号表示数组层次,连续的0其实都是没标出的,编译器当然明白这些,但是如果自己来做的话就要自己解析这个数组c文件到内存里,这个也不是一会儿功夫可以搞定的啊

请问谁有这方面的经验,或者有开源的库可以干这个活呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
35条回答
takashiki
1楼-- · 2020-01-01 18:33
直接调用解释器啊、编译器啊之类的,分分钟搞定。用C的话,请使用TCC编译器。
myxiaonia
2楼-- · 2020-01-01 19:16
takashiki 发表于 2016-7-27 10:14
直接调用解释器啊、编译器啊之类的,分分钟搞定。用C的话,请使用TCC编译器。
...

我是在想,如果没有办法,只能再建立一个上位机工程,然后让mdk编译时先编译并运行这个上位机工程,只是这样的话还得再带个工程,而且还得有编译器支持
myxiaonia
3楼-- · 2020-01-01 23:42
悲摧的是  那个数组文件里,数组上面还自带注释,真要自己做解析的话估计能够烦死人
michael.yang
4楼-- · 2020-01-02 04:43
看你的意思是压缩程序源文件,编译前再恢复,这有什么卵用?
takashiki
5楼-- · 2020-01-02 07:39
 精彩回答 2  元偷偷看……
myxiaonia
6楼-- · 2020-01-02 13:30
michael.yang 发表于 2016-7-27 10:22
看你的意思是压缩程序源文件,编译前再恢复,这有什么卵用?

是mdk里面有个大数组,我希望这个大数组是压缩后编译到最后的程序文件里,再里面解压恢复,

因为程序真正运行时其实只选择其中一个二维数组,总共80个二维数组,也就是内存里只需要1/80左右,大概1k左右,这个是完全可以接受的

而且使用rle编码的话解压时候不需要全部恢复,这给单片机的小内存解压带来了可能,所以选取rle编码在这里是合理又有效的办法

一周热门 更多>