标题:一个变参函数的示例
取消只看楼主
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
 问题点数:0 回复次数:2 
一个变参函数的示例
变参函数的实现:

.386
.model flat,stdcall

include kernel32.inc
includelib kernel32.lib

.code
_MyProc proc C p:VARARG        ;这里是关键
    ret
_MyProc endp

start:
    invoke _MyProc,ebx,ecx,edx    ;参数可以随意 个数
    invoke ExitProcess,0
end start

[bo](感谢“林海惊涛”网友点拨。。。)[/bo]

[[it] 本帖最后由 cnhanxiao 于 2008-11-10 15:14 编辑 [/it]]
收到的鲜花
  • zklhp2008-11-11 12:42 送鲜花  50朵   附言:我很赞同
搜索更多相关主题的帖子: 示例 函数 
2008-11-10 15:10
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
得分:0 
.386
.model flat,stdcall

include kernel32.inc
includelib kernel32.lib

.data
param1        dd 55555555h
param2        dd 99999999h
param3        dd 0AAAAAAAAh
param4        dd 0FEFEFEFEh

.code
testproc proc C args:VARAR          ;此段子程序是“林海惊涛”网友提供,很好!!!
        mov   eax,[ebp+4]
        movzx eax,byte ptr [eax+2]
        shr   eax,2                 ;得到参数个数
        ......
        ret
testproc endp

start:
    [un];_MyProc的第一个参数是后面参数的个数[/un]——此句去掉,是原来设想的残根
    invoke testproc,param1,param2,param3;,param4;变参函数调用
    invoke ExitProcess,0
end start

[[it] 本帖最后由 cnhanxiao 于 2008-11-11 17:00 编辑 [/it]]
收到的鲜花
  • zklhp2008-11-11 12:46 送鲜花  50朵   附言:我很赞同

还有绑架成版主的?拒绝做版主——对不起啊!
2008-11-11 10:49
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
得分:0 
回复 6# 的帖子
我四楼帖子里的注释有问题,那是之前为了确定参数个数,附加了一个参数,告知函数有多少参数。但是实际程序已经不用了,只是注释我忘记去掉了。

还有绑架成版主的?拒绝做版主——对不起啊!
2008-11-11 16:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-243379-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022615 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved