|
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
|
|