易码技术论坛

 找回密码
 加入易码
搜索
楼主: yan

[工具] 编译器Y2.26最终版 08/5/10更新

[复制链接]
发表于 2007-11-24 13:15:59 | 显示全部楼层
原帖由 yan 于 2007-10-28 10:18 发表
这个问题比较复杂,可能一时解决不了。
你暂时用其他方法替代引用吧。

很遗憾,我又发现问题不纯是引用引发的,当程序中的结构体(不是引用,是结构体变量)较多时也会引发诸如"未定义的函数ClearScreen"的bug,原本我觉得找到了代替结构引用的通用方法,但现在看来又不行了.真遗憾!
 楼主| 发表于 2007-11-25 10:29:37 | 显示全部楼层
编译器封闭性结构差,导致了符号表被破坏了......
 楼主| 发表于 2007-11-25 11:07:29 | 显示全部楼层

近期将推出浮点数库(LavaX1.0),浮点数采用IEEE标准存储,由于LavaX1.0不支持浮点数,所以浮点数用long型存储。
目前该库已经实现以下函数:
long itof(long i);                        //将整形i转换为浮点数(返回值为浮点数,但是采用long型存储,该库里的浮点数都是采用long型存储)
long ftoi(long f);                        //将浮点数f转换为整数(取浮点数f的整数部分)
long atof(char &str[]);                //将字符串转换为浮点数(如atof("3.1415926")或atof("3.22665e-12"))
long ftoa(long f,char &str[]);        //将浮点数转换为字符串(输出字符串为科学计数法表示浮点数)
//----------------------------------------------------------------------------------------
long fminus(long f);                //将浮点数转换为负的浮点数,即函数返回-f
long fadd(long f1,long f2);        //返回浮点数f1和浮点数f2相加的结果,即函数返回f1+f2
long fsub(long f1,long f2);        //返回浮点数f1和浮点数f2相减的结果,即函数返回f1-f2
long fmul(long f1,long f2);        //返回浮点数f1和浮点数f2相乘的结果,即函数返回f1*f2
long fdiv(long f1,long f2);        //返回浮点数f1和浮点数f2相除的结果,即函数返回f1/f2
long fcmp(long f1,long f2);        //返回浮点数f1和浮点数f2相比较的结果,如果f1>f2则返回1,f1<f2则返回-1,f1==f2则返回0
//----------------------------------------------------------------------------------------
long fabsf(long f);                //返回浮点数f的绝对值
long ldexpf(long f,char exp);        //计算并返回f*2^exp的值
long frexpf(long f,int &exp);        //把参量f分解成一个0.5~1范围内的尾数和一个整型指数,即f=尾数*2^exp,其中尾数由函数返回,指数存储在参量exp中
long sqrtf(long f);                //返回根号f的值
long logf(long f);                        //返回ln(f)的值(以e为底)
long log10f(long f);                //返回log(f)的值(以10为底)
long expf(long f);                        //返回e^f的值(以e为底,以浮点数f为指数)
long powf(long f1,long f2);        //返回f1^f2的值(以f1为底,以浮点数f2为指数)
long sinhf(long f);                //返回f的双曲正弦值
long coshf(long f);                //返回f的双曲余弦值
long tanhf(long f);                //返回f的双曲正切值;f以弧度表示

敬请关注!


[ 本帖最后由 yan 于 2007-11-25 11:10 编辑 ]
 楼主| 发表于 2007-11-25 11:12:43 | 显示全部楼层
目前正在学习编译原理,可能重新编写这个软件。
发表于 2007-11-25 11:58:46 | 显示全部楼层
支持啊
发表于 2007-11-25 14:57:21 | 显示全部楼层
支持yan
发表于 2007-11-25 15:01:09 | 显示全部楼层
虽然WQX坏了..可是还是要支持~
 楼主| 发表于 2007-11-28 08:52:38 | 显示全部楼层
更新了浮点数库。。。
发表于 2007-11-28 12:00:25 | 显示全部楼层
 楼主| 发表于 2007-11-28 12:06:31 | 显示全部楼层
来一个例子,不过速度有点慢(毕竟不是汇编写的^_^)
#include <float.y>

void main()
{
        int i,x1,y1,x2,y2;
        long pi,offset,f180,f36;//浮点数

        pi=atof("3.14159265");
        offset=atof("40.5");
        f180=itof(180);
        f36=itof(36);
        x1=20;
        y1=40;
        ClearScreen();Refresh();
        Line(15,40,145,40,1);
        Line(20,0,20,79,1);
        for (i=3;i<=360;i=i+3)
        {
                x2=x1+1;
                y2=ftoi(fsub(offset,fmul(sinf(fdiv(fmul(itof(i),pi),f180)),f36)));
                Line(x1,y1,x2,y2,1);
                x1=x2;
                y1=y2;
        }
        getchar();
}
发表于 2007-11-28 12:14:54 | 显示全部楼层
支持!!!
发表于 2007-11-28 13:23:45 | 显示全部楼层
支持!!!

支持浮点库了!!!
发表于 2007-11-29 11:21:11 | 显示全部楼层
爽啊,支持浮点了,感谢YAN。回去就下载。
发表于 2007-11-29 11:32:34 | 显示全部楼层
原帖由 yan 于 2007-11-25 11:12 发表
目前正在学习编译原理,可能重新编写这个软件。

你是说目前的这么强大的星端编译软件是你在“不清楚编译原理”的情况下的作品,那我简直无法想象你在“清楚了编译原理”之后这个软件将强大到什么地步。
楼主你真是太强了,很羡慕啊,我总感觉自己好像C语法都知道的差不多了,可是还是无法写一个简单的软件,老感到无从下手。望YAN指条明路。
发表于 2007-11-30 15:17:34 | 显示全部楼层
原帖由 CJJR 于 2007-11-29 11:32 发表

你是说目前的这么强大的星端编译软件是你在“不清楚编译原理”的情况下的作品,那我简直无法想象你在“清楚了编译原理”之后这个软件将强大到什么地步。
楼主你真是太强了,很羡慕啊,我总感觉自己好像C语法都知道的差不 ...

嘿嘿...从简单的起步..
重要的是你要明白你要写什么软件,有什么功能~~~
 楼主| 发表于 2007-11-30 18:14:54 | 显示全部楼层
LS说的是。
发表于 2007-11-30 18:56:03 | 显示全部楼层
谢谢大家的点播。
        我发现自己好像是不会用绘图函数,比如说我的程序主图是通过先绘在缓冲区再经过刷新显示在屏幕上的,现在我想实现这样的功能,给出一个按错键的提示,提示完了之后怎样才能回到和以前一模一样的主图上去呢,是要用goto语句跳到前面去再来一下Refresh吗?
发表于 2007-11-30 19:15:09 | 显示全部楼层
原帖由 yan 于 2007-11-25 11:12 发表
目前正在学习编译原理,可能重新编写这个软件。

强烈支持YAN!期待星端编译器的强大功能!YAN太厉害了!
发表于 2007-11-30 19:27:38 | 显示全部楼层
原帖由 CJJR 于 2007-11-30 18:56 发表
谢谢大家的点播。
        我发现自己好像是不会用绘图函数,比如说我的程序主图是通过先绘在缓冲区再经过刷新显示在屏幕上的,现在我想实现这样的功能,给出一个按错键的提示,提示完了之后怎样才能回到和以前一模一样的主 ...

如果这个"按错键的提示"很简单,可以直接在屏幕上绘图而不经由缓冲区,这样只要Refresh()就可以将屏幕上的图象恢复到原来的样子了.如果这个"按错键的提示"必须经由缓冲区画出来,那么就先用GetBlock把屏幕备份到一块内存,以后再用WriteBlock画到屏幕就可以了.
发表于 2007-12-1 12:21:54 | 显示全部楼层
谢谢楼上,原来是这样实现啊。
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-5-14 03:46 , Processed in 0.018392 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表