I有一个带有内联汇编的函数,该函数具有以下定义:
void __declspec(naked) func()
{
__asm
{
//...
JMP [address]
//...
}
}
这个地址变量只有在运行时才知道,主要是我有:
int main()
{
//...
DWORD address = getAddress();
func();
//...
}
与此类似,代码不会编译,并显示以下错误消息:
错误C2094:标签"地址"未定义
知道我不能将地址作为参数传递给
func()
函数,我该如何解决这个问题?我可以在命名空间中定义地址吗?这会是一个好的做法吗?命名空间是否可以用于提升变量的作用域(在不同的函数/作用域中使用此变量(?
如果您在C++中,当您在堆栈中留下具有类实例的块时,必须调用析构函数,JMP不会出现这种情况,我也不会谈论堆栈指针/帧的值
C++有异常,请使用它们,例如,在argument中给定要在汇编部分中调用的无参数函数的地址,而该函数throw
是您想要的异常,并在您想要进行的目的地放置try-catch