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