Re[3]: Calling Convention - IT и всем...
От: Mobster  
Дата: 31.05.01 01:50
Оценка:
Здравствуйте IT, вы писали:

W>>Почему я не знаю.

W>>Но помоему, именно благодаря этому способу, мы имеем возможность передавать в
W>>функцию переменное число параметров.

W>>Поправьте меня если я не прав.

W>>А то мне и самому интересно стало.

IT>Именно поэтому. Кстати, к этому прилагается ещё один небольшой недостаток — в C после вызова функции стек должна восстанавливать вызывающая процедура, в Паскале это обязанность вызываемой (в смысле вызванной, та которую вызвали) функция. Получается экономия кода и код работает быстрее, потому как, если мне не изменяет мой склероз, корректировку стека можно сделать прямо в команде возврата.


Насчет того, что обратная передача аргументов в стек, позволяет передавать переменное количество параметров — это не совсем так. Если вы пользовались функциями с переменным числом параметров (в stdarg.h находятся; va_arg, va_start, va_end) то там обработка параметров идет именно СЛЕВА НАПРАВО (то есть то, в каком порядке аргументы передались в функцию вообще не имеет никакого занчения), причем Вы должны в функцию в качестве аргумента передавать переменную, которая указывает количество аргументов или реализовывать обработку списка параметров до какого-то параметра, который у вас используется в качестве terminator'а. Так вот весь УЖАС в том, что это все идеально подходит и для паскалеобразных языков, хотя в последнем нет (насколько я знаю) такой возможности. Именно поэтому меня этот вопрос так заинтересовал :-)))))

А насчет ответа, что пришлось бы в качестве первого параметра передавать многоточие — так это вообще уже непонятно что :-))))

Так что я все еще не понимаю!!!
Если кто-нибудь наткнется на варианты ответа пишите в любое время на <serg@alsi.com>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.