@wz520
2015-10-06T11:07:16.000000Z
字数 699
阅读 2431
AHK AutoHotkey C语言
AHK的表达式语法很像C,但是跟C还是有很多不同点的,不要觉得像C的地方可以完全像C一样用。以下列出我在使用过程中碰到过的不同点:
这在 C语言 和其他多数 类C语言(如 C++、Java、JavaScript……)中是块注释,但是在AHK中是多行注释。
这有什么区别呢?
比如,在 C/C++ 中你可以这样:
int c=/*abc*/123;printf("%d", c);
这里 abc 是注释,编译时会把 /*abc*/ 替换成 空格,其他照常编译。
而 AHK 中如果你写成这样:
a=/*a*/3MsgBox % a
这不会报错,只是 MsgBox 会显示 /*a*/3。
因为在AHK中 /* 和 */ 两个注释符必须出现在行首。如果不是,则不会被认为是注释符。
在 AHK 的表达式中, := 是赋值,=是比较。
而在 C 里面,=是赋值,==是比较。
而 AHK 也有==运算符,这是精确比较。
AHK 的{必须出现在行尾,而}必须出现在行首。而且貌似在很多 if 开头的命令中{只能单独占一行。不像 C语言 那么随便。
AHK 的 if(表达式) 之后的语句必须换行。比如:
if(a=3)b=4
不能这样
if(a=3) b=4
不过部分 if 开头的命令(比如 IfEqual、 IfInString),如果之后只跟一句命令(不是表达式)的话,可以写在一行里:
IfInString, str, name, GoSub, nameproc
相当于
IfInString, str, nameGoSub, nameproc
但是要注意这里的 GoSub 是 AHK 的命令,而不是表达式,如果是表达式,就不能写在一行上。