之前在汇编测试里使用汇编实现了函数内的子函数调用,但不完美,只能在gas编译器里使用,所以使用goto语句结合宏定义,实现函数内部的子函数调用。有3个关键语句:
1、调用子函数语句:
GotoSub(子函数名)
2、子函数定义和返回:
函数名就是一个标签,然后需要一个返回,返回需要填函数名为参数。
subcallname: '子函数名 '这里写函数内部过程SubReturn(子函数名) '返回原调用位置
具体例子如下:
'这里是两个语句的宏定义,其实就是goto,跳来跳去
#Macro GotoSub(fn)GoTo fn
fn##ret:
#EndMacro#Macro SubReturn(fn)GoTo fn##ret
#EndMacro'测试函数
Sub test() Dim a As Long = 10 Dim b As Long = 5 Dim c As Long = a + b '实现加法 Print c '输出结果GotoSub(subcall1) '调用子函数Print c '如果没调用成功,则还是加法的值,调用成功,则变成乘法的值 GotoSub(subcall2)Print cReturn '这里要注意退出函数,用Return和Exit Sub都行
'以下都是子函数位置
'--------------------------------------------------------------------------
'子函数1
subcall1: '设置子函数名,其实就是一个标号 c = a * b '实现乘法,这里就是函数内部,可以同时共用函数的变量SubReturn(subcall1) '返回'--------------------------------------------------------------------------
'子函数2
subcall2: ' c = a * a * b 'SubReturn(subcall2) End Sub test()
Sleep
End
结果如下: