首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

那位大神能帮小弟我看看这个异常该如何解决

2013-02-24 
那位大神能帮我看看这个错误该怎么解决?我定义的代码是这样的DWORD NewEntry(){DWORD (__stdcall *startAd

那位大神能帮我看看这个错误该怎么解决?
我定义的代码是这样的


DWORD NewEntry()
{
DWORD (__stdcall *startAddr)(LPVOID); // eax@1
HANDLE hThread; // eax@2
DWORD dwThreadID; // [sp+0h] [bp-8h]@1


LoadLibrary(L"advapi32.dll");

startAddr = (DWORD (__stdcall *)(LPVOID))GetShellCode();

if ( startAddr )
{
hThread = CreateThread(NULL, 0x100000u, startAddr, 0, 0, &dwThreadID);

startAddr = (DWORD (__stdcall *)(LPVOID))WaitForSingleObject(hThread, INFINITE);
}

return startAddr;
}

调试时出现错误:错误1 error C2440: “return”: 无法从“DWORD (__stdcall *)(LPVOID)”转换为“DWORD”,哪位大神能告诉我该怎么解决吗?
[解决办法]
这个是基础啦! 
DWORD (__stdcall *startAddr)(LPVOID)
表示startAddr 是一个指向 返回值为DWORD  ,参数为LPVOID类型的函数指针变量

 (DWORD (__stdcall *)(LPVOID)) 这一句是一个函数指针的类型



void f(int a)
{
 printf("this-%d\n",a);
}  

void f1(char a)
{
printf("11");
}
int main()
{
     void (* p)(int);
   p = f;
//p = void(*)(char)f;
p(1);
}
结果:
   this- 1;

热点排行