__closure和__stdcall虽然都是可以用来修饰函数指针的,但是方向是不同的,
__stdcall修饰函数的调用方式,__closure是指修饰函数为成员函数。
举个具体的例子,
int __stdcall GlobalFunc(int, int); //1
class SomeClass
{
int __stdcall MemberFunc(int, int); //2
};
注意,1和2中的函数类型是不同的,并且是不兼容的。
其中,函数2被编译器解析为
int __stdcall SomeClass_MemberFunc(SomeClass* const this, int, int);
函数的名称也会被编译器粉碎的。
所以,
函数1的类型为int __stdcall (*)(int, int);
函数2的类型为int __stdcall (SomeClass::*)(int, int);
其中的SomeClass::就相当于__closure关键字的作用。
被__closure修饰的函数必定为某个类的成员函数。
__stdcall修饰函数的调用方式,__closure是指修饰函数为成员函数。
举个具体的例子,
int __stdcall GlobalFunc(int, int); //1
class SomeClass
{
int __stdcall MemberFunc(int, int); //2
};
注意,1和2中的函数类型是不同的,并且是不兼容的。
其中,函数2被编译器解析为
int __stdcall SomeClass_MemberFunc(SomeClass* const this, int, int);
函数的名称也会被编译器粉碎的。
所以,
函数1的类型为int __stdcall (*)(int, int);
函数2的类型为int __stdcall (SomeClass::*)(int, int);
其中的SomeClass::就相当于__closure关键字的作用。
被__closure修饰的函数必定为某个类的成员函数。