哪位兄弟帮我看看这段程序是干什么的?

csy 2002-10-31 10:58:09


#define QDECL __cdecl
static int (QDECL *syscall)( int arg, ... ) = (int (QDECL *)( int, ...))-1;

void dllEntry( int (QDECL *syscallptr)( int arg,... ) ) {
syscall = syscallptr;
}
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckacka 2002-11-01
  • 打赏
  • 举报
回复
因为这个是变参申明、使用,所以用"__cdecl"。
这个是c的标准而且建立在640k的标准上的!
指明了一个函数调用方式为:传递的参数应该有调用着来释放,效率低!

现在一般用"__stdcall"。
这个是微软的标准!
方式为:传递的参数应该有自身释放,即在栈里释放,效率相对较高!

对于后面的
static int (QDECL *syscall)( int arg, ... ) = (int (QDECL *)( int, ...))-1;
申明了一个常量函数指针,并且给出了初值,表明指向一个固定的空间,这个空间的首地址是个遵循(int (QDECL *)( int, ...))这个规则的入口。

而后面的函数是对这个函数初始化!
csy 2002-11-01
  • 打赏
  • 举报
回复
THX,ckacka(小红帽) !
csy 2002-11-01
  • 打赏
  • 举报
回复
(int (QDECL *)( int, ...))-1 中的“ -1 ”,是怎么回事呢?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧