那位大神能帮我看看这个错误该怎么解决?
我定义的代码是这样的
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;