举报
教程为一家之言难免会有不少缺漏甚至错误,如果有哪位过路者发现了可以指出,谢谢。 本帖谢绝任何广告以及与主题无关的争论。 Lava之名源自最初由lee开发于文曲星nc2k系列上的跨平台应用程序标准。后历经各种变故以及版本更新,衍生出由GGV另行开发的GVMaker系列,以及由lee继续维护更新的LavaX/Lavo系列。下文中Lava指可以编译并且能在wqx上运行的若干Lava版本,并不特指lee或者GGV的编译器。可以看作是lee的LavaX3.0标准和GVMaker1.0标准的均予以支持的公共部分。
[附]教程使用的程序框架lava-sim: http://lava-sim.googlecode.com/svn/trunk/ 这是一个用MFC模拟了lava绝大多数函数功能的框架,配合教程使用。下载源码请安装TortoiseSVN,如果有人希望参与开发请跟帖并附上你的google帐号。 此程序基于loglave当年的研究,经过FantasyDR的进一步完善,以及lee的lava控制台编译器程序发布,可以做到同时进行pc应用程序以及lava程序的开发。 注意:此开源项目中并不包含lava的编译器,若需要编译成lava程序,请前往lee的Blog下载LavaX3.5版的LavaXIDE,将其中的lc.exe和lvm.exe拷贝到工程的lava目录下即可。
题外话:为了不引入错误的观念,我特地去查了一下c语言标准,却发现了一个诡异的事情。标准中竟没有规定这些基本数据类型的长度,只给了很模糊的定义:“编译器可能使用不同的数据位长和范围。这取决于使用的编译器。请参考具体的参考手册。”为了避免让这个朴素的教程充满诡异的争论,我所指的都以Microsoft Visual Studio 2005中的c++编译器为准。这个编译器还是比较符合一般习惯的。
char:8位有符号数据 short:16位有符号数据 long:32位有符号数据 long long:64位有符号数据
unsigned char:8位无符号数据 unsigned short:16位无符号数据 unsigned long:32位无符号数据 unsigned long long:64位无符号数据
题外话:看到这里可能有人奇怪,为何少了一个常见的类型int?这是因为int比较特殊。以前听说过一种说法,int类型的长度和编译器所处的环境的CPU位数有关,16位系统下的编译器会把int做成16位的,而32位CPU下的编译器则会生成32位的int数据。16位的时代已经过去,我们可以不考虑。现在绝大多数环境都是32位的CPU,那么int的实际效果和long是一样的。有人可能会发出抗议,64位的CPU也比较常见了,在64位环境下int会变成64位的数据么?根据MSDN里面的说法,int的长度只能在short和long之间,所以32位就到头了。事实上,long和short并不是数据类型,只是用来修饰基本类型的修饰符,就像unsigned的作用一样。因为默认的修饰对象是int,因此书写时可以省略掉。可以说int已经没有存在的必要=.=
int等价于long,表示32位有符号整数。 unsigned int等价于unsigned long,表示32位无符号整数。
float:单精度浮点数,占4字节 double:双精度浮点数,占用8字节
unsigned long * pn;
pn ++;
short * pn;
题外话:指针有什么用呢?如果有数组的概念,那么稍微好理解一些,一维数组就是该类型数据的指针,二位数组就是该类型数据的指针的指针,依次类推。指针可以看作是数据的门牌号码,通过门牌号码可以快速的找到需要的数据。调用函数的时候,有时候需要将大量的数据作为参数传入,这个时候可以仅仅传入这堆数据头部的指针,其他数据通过这个指针和偏移量就能访问。(关于高效的参数传递,还可以使用引用,关于引用请参考shooting发的帖子。)同时,指针可以更加灵活的操作数据。譬如动态分配出来的空间可以被赋给一个指针,然后程序通过指针和偏移量来操作空间中的各个数据。假如某份数据需要被多个其他数据所包含(譬如下面将要提到的结构体,就可以包含各种数据),但是这份数据只有一份本体,那么其他数据种可以仅仅包含它的指针。(引用也可以,参考shooting的帖子)
struct:结构体,用于定义一组数据,它的大小由它的成员决定。
struct Time { short hour; short minute; short second; }; struct Time now;
题外话:Lava中也有相同的东西,但是Lava可以直接用结构名来表示这个结构储存的地址,c语言中是不可以的。c语言中只能用&来获取结构变量的地址,譬如"&now"表示获得now的实际储存地址,可以将这个值赋给"struct Time*"。
本版积分规则 发表回复 回帖后跳转到最后一页
Archiver|手机版|小黑屋|EMAX Studio
GMT+8, 2024-4-20 17:47 , Processed in 0.013410 second(s), 17 queries .
Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc.