#define
QDECL __cdecl
static int (QDECL * syscall)( int arg, ... ) = ( int (QDECL * )( int , ...)) - 1 ;
void dllEntry( int (QDECL * syscallptr)( int arg,... ) ) ... {
syscall = syscallptr;
}
static int (QDECL * syscall)( int arg, ... ) = ( int (QDECL * )( int , ...)) - 1 ;
void dllEntry( int (QDECL * syscallptr)( int arg,... ) ) ... {
syscall = syscallptr;
}
因为这个是变参申明、使用,所以用"__cdecl"。
这个是c的标准而且建立在640k的标准上的!
指明了一个函数调用方式为:传递的参数应该有调用着来释放,效率低!
现在一般用"__stdcall"。
这个是微软的标准!
方式为:传递的参数应该有自身释放,即在栈里释放,效率相对较高!
对于后面的
static int (QDECL *syscall)(int arg, ... ) = (int (QDECL *)(int, ...))-1;
申明了一个常量函数指针,并且给出了初值,表明指向一个固定的空间,这个空间的首地址是个遵循
(int (QDECL *)( int, ...))
这个规则的入口。
而后面的函数是对这个函数初始化!