vb的addressof操作内是怎么把一个函数的函数名转换为对应的地址的?addressof之后得到的地址还能返还函数名么?
addressof是在编译的时候编译器获取了这个函数的地址,并且将addressof对应的变量直接嵌入代码中实现的。
AddressOf 运算符
一个一元运算符,它将其后面的过程的地址传递给一个 API 过程,该 API 过程在参数表对应位置中需要一个函数指针。
语法
AddressOf procedurename
必需的 procedurename 指定要传递的地址是哪一个过程的地址。这个过程必须是发出调用命令的工程中的一个标准模块模块里的一个过程。
说明
当一个过程的名称出现在一个参数列表中时,通常该过程已经被计算,并且该过程返回值的地址也会被传递。AddressOf 允许该过程的地址被传递给动态链接库 (DLL) 中的一个 Windows API 函数,而不是传递该过程的返回值。API 函数然后就可以使用这个地址来调用相应的 Basic 过程,这个过程就是我们所知道的回调。AddressOf 运算符只出现在对 API 过程的调用中。
注意这句“AddressOf 运算符只出现在对 API 过程的调用中。”而不是给自身调用的。
调用函数应该用Call MyFunction(参数1,参数2)这样的形式。