Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ создание процедуры(функции) типа Inc(n)/inc(n,2)

Автор: DFooz 13.06.2006 16:10

можно ли как-нибудь создать такую проедуру, чтобы в нее можно было отсылать несколько параметров, а в другом случае, напр., только один, а другие она по умолчанию возьмёт?

Автор: volvo 13.06.2006 16:15

Этот вопрос уже поднимался. Нет, нельзя (так, как ты это подразумеваешь)... В полной мере это доступно только в 32-битных компиляторах...

В принципе, есть возможность сделать то, что ты хочешь (чтобы можно было вызывать одну и ту же процедуру/функцию, но с разным числом параметров), но вот способ тебе явно не понравится...

Автор: DFooz 13.06.2006 17:05

а как тогда это осуществили в Паскале?

Цитата
В принципе, есть возможность сделать то, что ты хочешь (чтобы можно было вызывать одну и ту же процедуру/функцию, но с разным числом параметров), но вот способ тебе явно не понравится...


в целях общего развития напишите пожалуйста

Автор: volvo 13.06.2006 17:58

Цитата(DFooz @ 13.06.2006 13:05) *
а как тогда это осуществили в Паскале?
Все процедуры типа Inc/Dec и Read(Ln)/Write(Ln) на самом деле являются макросами...

Цитата
в целях общего развития напишите пожалуйста
Можно попробовать описать эти 2 разные процедуры в разных модулях (в одном, например, с одним параметром, во втором - с двумя), и подключить оба этих модуля к основной программе.

Автор: DFooz 13.06.2006 18:20

Цитата(volvo @ 13.06.2006 14:58) *

Все процедуры типа Inc/Dec и Read(Ln)/Write(Ln) на самом деле являются макросами...

т.е. компилятор считывает, что в скобках, а потом анализирует, 2 там переменных или одна и чего-то запускает? или я фигню какю-то написал...

Автор: volvo 13.06.2006 18:27

Цитата
компилятор считывает, что в скобках, а потом анализирует, 2 там переменных или одна и чего-то запускает?
Там (вторым параметром) может быть не только переменная, но и константа и выражение...

Но в целом ты прав, именно так и происходит... Только вот имена таких процедур/функций известны компилятору, и ТОЛЬКО с ними производится такая проверка. С другими (подпрограммами пользователя) - производится проверка на соответствие заголовку, и если точного соответствия не найдено - ошибка...

Автор: DFooz 13.06.2006 19:39

идею понял, спасибо.