找回密码
 点一下
查看: 10159|回复: 25

目前已知的Galaxy和C的区别

[复制链接]
发表于 2010-3-2 14:02:49 | 显示全部楼层 |阅读模式
1]Galaxy没有float和double,只有一个fixed类型,代表定点小数。

2]Galaxy使用的是老式C语言的语法,因此局部变量必须声明在函数顶部。(全局变量无所谓)

3]基于如上的原因,声明数组时,数组尺寸必需写在变量类型的后面而不是变量名的后面。



int[3] abc; //正确
int abd[3]; //错误

当然,多维数组是支持的。int[3][4] abc; 合法。

4]不支持用括号来进行的强制类型转换,如(int)1.23。目前只能用原生函数来进行强制类型转换。存在一些简单的隐式类型转换,比如int->real,各种类型->bool等等。

5]不支持++操作和--操作

6]基于以上原因,指针无法自增和自减。也无法使用p+1的方式来改变指针的值,因为1被识别为整数,不会自动转换为指针类型。(注:指针功能已经被砍掉)

7]不支持 /* */ 格式的注释块。只支持单行注释//

8]不支持预处理指令。

9]基于以上原因,Galaxy没有#include。Galaxy使用的是

include "TriggerLibs/MeleeNotHardAI"

这样的include方式,没有#,文件名不用写.galaxy的后缀。

10]不支持goto语句。

11]不支持new关键字,其实C本来就没这个,这个是C++的

12]不支持动态内存分配,无法malloc().

13]不支持sizeof关键字。其实没法malloc的话,sizeof确实也没啥用。

14]没有signed和unsigned关键字,所有Galaxy的数值类型都默认为有符号数。

15]不支持swith,只能用if.

16]早期版本不支持for循环,只能用while循环。但目前已经加入for循环的支持。具体见
http://bbs.islga.org/read-htm-tid-2158219-page-1-fpage-1.html

17]表达式(null==""),返回真,比较奇怪,但实际上他们确实是不同的两个值。

18]所有if结构的选择分支和所有循环结构的循环体都必须写在大括号里,就算只有一行也不能省略大括号。

比如

if(1)
     UIDisplayMessage(PlayerGroupAll(), 4, StringToText("123"));
就无法通过。
必须写
if(1)
{
     UIDisplayMessage(PlayerGroupAll(), 4, StringToText("123"));
}

19]指针功能已经被砍掉,但2012年发布的1.5版本加入了函数/结构/数组引用功能,作用类似,具体见
http://bbs.islga.org/read-htm-tid-1034938-page-1-fpage-1.html

本文在2013年11月25日更新过,当前的SC2版本是2.0.11
发表于 2010-3-2 14:07:44 | 显示全部楼层
麦D所言极是!
回复

使用道具 举报

发表于 2010-3-2 14:12:34 | 显示全部楼层
就像jass换了件外衣?
回复

使用道具 举报

 楼主| 发表于 2010-3-2 14:14:44 | 显示全部楼层
比jass好的地方也有不少。

运行时不容易导致游戏崩溃,反正目前我还没遇到。

支持指针(虽然除了按引用传递外基本没用)和多维数组,支持位操作。
回复

使用道具 举报

发表于 2010-3-2 14:37:23 | 显示全部楼层
JASS 3.0
回复

使用道具 举报

发表于 2010-3-2 16:22:14 | 显示全部楼层
看起来就是jass的风格转换成c了而已, 我估计很多操作符都不支持. 包括+=, &, <<, >>>, ?:这样的...
回复

使用道具 举报

发表于 2010-3-2 20:38:24 | 显示全部楼层
引用第5楼钰于2010-03-02 16:22发表的  :
看起来就是jass的风格转换成c了而已, 我估计很多操作符都不支持. 包括+=, &, <<, >>>, ?:这样的...

+=和位操作都支持的。现成的官方AI脚本里还有位操作的例子呢。
回复

使用道具 举报

发表于 2010-3-2 20:58:05 | 显示全部楼层
于是增加两条,关于null==""的。
回复

使用道具 举报

发表于 2010-3-2 22:34:09 | 显示全部楼层
不是纯c,只是有c的一些概念而已,脚本语言都是这样的么```
回复

使用道具 举报

发表于 2010-3-3 00:40:32 | 显示全部楼层
在数组方面有退步吧?不支持malloc,数组尺寸又是固定的,不能自动扩展
回复

使用道具 举报

发表于 2010-3-3 01:02:48 | 显示全部楼层
libla不加GA SC2群吗?~~
回复

使用道具 举报

发表于 2010-3-3 01:05:35 | 显示全部楼层
引用第11楼libla于2010-03-03 00:40发表的  :
在数组方面有退步吧?不支持malloc,数组尺寸又是固定的,不能自动扩展
只能说是换了个外套,让原本定死的数组尺寸变成自定义的了……姑且算是有点进步?
回复

使用道具 举报

 楼主| 发表于 2010-3-3 01:15:53 | 显示全部楼层
jass的数组是固定尺寸的呀。8192嘛。
回复

使用道具 举报

发表于 2010-3-3 01:59:08 | 显示全部楼层
就好比原本是在遥远的8192米处有一堵墙,你义无反顾地撞上去,现在玻璃渣跟你说:嗯,这样吧,我让你选择啥时候死,来,选个时间吧。于是乎大家想了半天,还是把墙插在了8192处,依旧义无反顾地撞上去……
回复

使用道具 举报

发表于 2010-3-6 22:49:15 | 显示全部楼层
支持!!!!!!!!!!!!!
回复

使用道具 举报

发表于 2010-3-6 23:40:08 | 显示全部楼层
其实我看了一下感觉就是jass升级版
回复

使用道具 举报

发表于 2010-3-8 10:13:24 | 显示全部楼层
还有 那个
同1个域内 return 后还接其他语句 就会语法错误
而包在if 或者其他什么里 就不会出错
回复

使用道具 举报

发表于 2010-3-9 15:33:50 | 显示全部楼层
引用第10楼百鬼于2010-03-02 22:34发表的  :
不是纯c,只是有c的一些概念而已,脚本语言都是这样的么```
并不是所有脚本语言就是这样的。像asp的功能就比较强大..
回复

使用道具 举报

发表于 2010-3-24 22:10:14 | 显示全部楼层
为什么Galaxy非要搞一些不习惯的东西呢……
回复

使用道具 举报

发表于 2010-3-25 18:51:58 | 显示全部楼层
根本就是被阉割的C语言嘛,没什么研究激情
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-4-19 12:58 , Processed in 0.044009 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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