내가 MSVC와 ICC의 문제가 발생했습니다 스택 손상 컴파일러없이 __stdcall과 가변 인자 사용 : 나는 규칙을 호출 stdcall을 가진 varadic 인수를 사용할 필요가어떻게
을하지만, 컴파일러는 varadic 그것을 무시 스택을 손상시킵니다.
쉽게 해결할 수있는 방법은 인수의 수를 인수로 취한 다음 ESP
을 오프셋하기 전에,이 경우에는 함수의 컨텍스트에 대한 인수의 수를 필요로하지 않습니다. 가능하다면 그것을 회피 할 것입니다.
누군가이 방법이 있는지 알고 있습니까? documentation으로 당
기본적으로 할 수 없습니다. 'stdcall'을 사용할 때 _callee_는 스택 정리를 담당합니다. _callee_는 인수의 수 또는 인수가 차지하는 스택 공간의 양을 알지 못하므로 추가 정보가 제공되지 않으면 논리적으로 스택을 정리할 수 없습니다. 당신이하려고하는 것은 좋은 생각이 아니며 그것을 작동시키려는 시도는 그것이 가치있는 것보다 훨씬 더 많은 노력이 될 것입니다. 이것은 XY 문제처럼 들리므로 실제로하려는 것을 재고해야합니다. –
@CaptainObvlious 이것은 전통적인 기능이 아닙니다. 그리고 정말로 가장 좋은 해결책은 내가 묻는 것 (가능한 경우)을하는 것입니다. 그러나 요한의 대답에 대한 제 응답을보십시오. 그것은 조금 더 설명합니다. – Nowayz