void xGetFunctionAddress(void* FunctionDefinition, std::string FunctionName)
{
*static_cast<FARPROC*>(FunctionDefinition) = xProcAddress(Module, FunctionName.c_str());
}
在上面的代码中,我试图摆脱它FARPROC*
以使其跨平台。但是,如果我转换为long long int (*)()
,它会给我一个错误,它不能静态地转换为那个。因此,当我 typedef 它时,它可以工作:
前任:
//This works:
void xGetFunctionAddress(void* FunctionDefinition, std::string FunctionName)
{
typedef __stdcall long long int (*Ptr)();
*static_cast<Ptr*>(FunctionDefinition) = GetProcAddress(Module, FunctionName.c_str());
}
//This doesn't:
void xGetFunctionAddress(void* FunctionDefinition, std::string FunctionName)
{
*static_cast<long long int(*)()>(FunctionDefinition) = GetProcAddress(Module, FunctionName.c_str());
}
在第二个例子中我做错了什么?:S