helg wrote:В паскалевсеком вызове указатель на стек инкрементирует вызывающий, а декрементирует вызываемый.
Любому разбирающемуся в вопросе человеку сразу бросится в глаза непринципиальная, но очевидная ошибка в вышепроцитированном утверждении. Вспоминается сцена из Ingloirious Basterds
Но не суть
helg wrote:В языке C такое работает плохо, там есть всякие printf и varargs, там вызывающий меняет его туда и назад . Паскалевский метод экономит байты кода. Виндовс была сдизайнена во времена, когда билгейц уже сказал, что 640KB хватит всем, но ещё не вылез за их пределы - посему вопрос соответствия генеральной линии решался "любой ценой". Вот и ухватились за эти жалкие байты - ценой кривизны дизайна.
Чепуха редкостная. Все вверх ногами.
"Паскалевский" вызов - оптимальный способ вызова, к которому, по возможности, стремятся реализаторы любого процедурного языка программирования. Однако кривые решения в дизайне С предотвращали натуральное использование этого вызова. При чем основная причина тут не в variadic функциях (их всегда можно выделить в особую группу или просто запретить в API), а именно в возможности вызова непрототипизированных функций в С. Эта ошибка была быстро замечена и сразу исправлена в С++, а в С, в силу сопротивления со стороны legacy кода, мы вынуждены закрывать эту дыру постепенно. Пока что в С99 мы запретили вызов недекларированных функций, а вызовы непрототипизированных функций объявили deprecated (каким он сохраняется и в С11). Как только будет принято решение окончательно удалить из языка эту фичу, реализации языка С смогут, наконец, полноценно использовать "паскалевский" стиль управления стеком.
helg wrote:Ладно, свособы вызова Паскаля и С. Поколения MS-харлальшиков придумали ещё несколько способов - и все они в разной степени до сих пор присутствуют в Windows. Такая вот свалка API.
Бред-то какой ламерский. Разнообразные способы вызова придуманы реализаторами компиляторов С и С++ и произрастают из особенностей этих языков. Способов вызова много, никакого отношения ни к Windows, ни к какой-либо другой OC они, понятное дело, не имеют.