VC.NET: что означает соглашение STDCALL?

Delphist 28.04.2004 - 13:55 | Простой вопрос: у меня исходник на VC, там перед объявлением функции стоит слово STDCALL (все заглавными, это и смущает) ... typedef PF_FORWARD_ACTION STDCALL (*PacketFilterExtensionPtr)( IN unsigned char *PacketHeader, IN unsigned char *Packet, IN unsigned int PacketLength, IN unsigned int RecvInterfaceIndex, IN unsigned int SendInterfaceIndex, IN IPAddr RecvLinkNextHop, IN IPAddr SendLinkNextHop); ... где PF_FORWARD_ACTION - это enum из 4 значений. Что означает STDCALL заглавными, в какой .h это описано? Не могу найти.
sd2000 1 - 28.04.2004 - 15:28 | STDCALL это концепция передачи параметров в процедуру через стек и освобождение стека после завершения работы процедуры. С - концепция, это передача параметров справа налево: func(par1,par2) -> push par2 push par1 call func Очистка стека осуществляется вызывающей процедурой. Pascal - концепция, это передача параметров слева направо func(par1,par2) -> push par1 push par2 call func Очистка стека на совести вызываемой (func) процедуры. Концепция STDCALL - нечто среднее. Параметры передаются справа налево (как в С), а стек очищает вызываемая процедура. Существует еще концепция FASTCALL. Там четыре первых параметра передаются в регистрах, а остальные через стек справа налево. Очищает стек вызываемая процедура.
Delphist 2 - 28.04.2004 - 15:57 | Это все я знаю, смущает то, что написано не __stdcall, а STDCALL
UE 3 - 28.04.2004 - 16:01 | #define STDCALL __stdcall ;)
Delphist 4 - 28.04.2004 - 16:15 | Да, работает. Спасибо! А дядя Билли не поругает? :)
UE 5 - 28.04.2004 - 16:24 | Обещаю ничего ему не говорить ;)

>>