Существуют (среди прочих) два типа соглашений вызова - stdcall и cdecl. У меня к ним мало вопросов:
- Когда вызывается функция cdecl, как вызывающий знаете, если он должен освободить стек? На сайте вызова выполняется ли вызывающий абонент знает, вызывает ли вызываемая функцию cdecl или stdcall функция? Как это работает? Как вызывающий абонент знает, если он освободить стек или нет? Или это ответственность линкеров?
- Если функция, объявленная как stdcall, вызывает функцию (которая имеет соглашение о вызове как cdecl), или наоборот, это неуместно?
- В общем, можем ли мы сказать, какой вызов будет быстрее - cdecl или stdcall?