// 初始化映射工厂
InitializeMappingFactory();
IMOKE_METHOD(NULL,&Messagebox,NULL,"hello world.","你好", MB_OK);
在后面加任何东西都不会出错,而且很方便的绕过编译器的参数校验,比如:
IMOKE_METHOD(NULL,&Messagebox,NULL,"hello world.","你好", MB_OK,"123456","7892737");
都没有问题。
好了跑题了,继续说正题:
1. 无返回值的函数调用方法
a. 参数为普通变量,即: int long ulong 和指针
void SetValue(LONG f_Val)
{
f_Val 获取方式为 mov eax, [ebp + 8]
}
SetValue(xxx); 的调用方式为
push xxx
call SetValue
b. 参数为类对象,如:CString
void SetValue(std::string f_Val)
{
f_Val 获取方式为 lea eax, [ebp + 8]
}
SetValue(xxx);的调用方式为
esp -> 生成xxx的临时对象 std::string
call SetValue
c. 如果参数以引用方式调用
void SetValue(std::string &f_Val)
{
f_Val 获取方式为 mov eax, [ebp + 8]
}
SetValue(xxx);的调用方式为
lea eax, xxx
push eax
call SetValue
d. 如果是类调用方法与之一样,区别是 ECX -> 指向对象,具体如下所示
void XXX::SetValue(LONG f_Val)
{
ecx -> XXX对象
f_Val 获取方式为 mov eax, [ebp + 8]
}
a.SetValue(xxx); 调用方式为
push xxx
mov ecx,a
call XXX::SetValue
void XXX::SetValue(std::string f_Val)
{
ecx -> XXX对象
f_Val 获取方式为 lea eax, [ebp + 8]
}
a.SetValue(xxx);的调用方式为
esp -> 生成xxx的临时对象 std::string
mov ecx,a
call XXX::SetValue
void XXX::SetValue(std::string &f_Val)
{
ecx -> XXX对象
f_Val 获取方式为 mov eax, [ebp + 8]
}
a.SetValue(xxx);的调用方式为
lea eax, xxx
push eax
mov ecx,a
call XXX::SetValue
本文来自 280文秘网(https://www.it280.com),转载请保留网址和出处
【VC++函数,类函数调用过程】相关文章:
2018国家电网新大纲财会类市场模拟卷多选题(二)05-07
2016年职称英语综合类阅读判断练习八05-07
儿童舞蹈教程:国标新手上路05-07
2018湖南省农村信用社联合社招聘科技专业人才拟聘公告05-07
at(the)least和not(in)the least用法区别 相似词语辨析(17)05-07
一年级数学奥数题及答案:猴子爬树05-07
5月11日开始报名!2023年内蒙古鄂尔多斯市乌审旗秋季幼升小入学条件和流程公布05-07
辽宁省退役军人事务厅 财政厅 关于调整部分优抚对象等人员抚恤和生活补助标准的通知05-07
普通中学生入团志愿书500字通用范文05-07
计算机应用技术英语简历范文大全05-07
初中学校德育课程整合实施探究05-07
