@wz520
2015-10-06T19:07:16.000000Z
字数 699
阅读 2189
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*/3
MsgBox % 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, name
GoSub, nameproc
但是要注意这里的 GoSub
是 AHK 的命令,而不是表达式,如果是表达式,就不能写在一行上。