[旧帖]
[求助]对typedef和函数指针的一点疑问
0.00雪花
发表于:
2010-2-14 17:02
1482
[旧帖] [求助]对typedef和函数指针的一点疑问
0.00雪花
刚才在【求助问答区】与KOEIKOEI讨论函数指针问题时,突然发现自己以前没注意到的一点细节。先看代码:
#include<windows.h>
#include<iostream>
using namespace std;
typedef int (_stdcall *pMsgBox)(HWND,LPCTSTR,LPCTSTR,UINT);
int main()
{
pMsgBox pf = (pMsgBox)GetProcAddress(LoadLibrary("user32.dll"),"MessageBoxA");
cout << MessageBoxA << endl;
cout << pf << endl;
cout << (*pf) << endl;
MessageBox(NULL,"Hello","MsgBox",MB_OK);
pf(NULL,"Hello","MsgBox",MB_OK);
(*pf)(NULL,"Hello","MsgBox",MB_OK);
return 0;
}
结果pf和(*pf)居然是一样的,而且下面那三种方式都能弹出MessageBox,我想问一下大家一般都怎么写,是写成pf(NULL,"Hello","MsgBox",MB_OK)还是(*pf)(NULL,"Hello","MsgBox",MB_OK)?两者有什么区别么?我反汇编看了一下,两者居然一样的,都是call [ebp-4],好诡异……
攒钱的最后关头,舍不得到【求助问答区】花钱了……在这里发出来,希望大大们不要介意
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)