0
我正在写一些内联函数以获得乐趣,并且它引发了一个我从未遇到过的异常。有趣的是,如果我继续,异常之后就停止了我的程序执行流程,它将返回两个整数的总和。C++内联函数抛出异常:运行时检查失败#0 - ESP的值不正确
__declspec(dllexport) int addintegers(int one, int two)
{
int answer = 0;
__asm
{
mov eax, 0
push two
push one
call add
mov answer, eax
}
return answer;
} // Debugger stops here with exception message
异常消息:
运行时检查失败#0 - ESP的值未正确保存整个函数调用。这通常是调用一个调用约定的函数声明的结果,其中函数指针声明的调用约定不同。
// add function definition
int add(int one, int two)
{
return one + two;
}
其中是'add'定义? – sehe
购买微软雪茄,让您摆脱困境。你需要使用add()函数__stdcall,否则你将不得不在调用两次pop之后自行清理堆栈。 –
我的确有一个add的定义 –