Автор: 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 там переменных или одна и чего-то запускает?
Там (вторым параметром) может быть не только переменная, но и константа и выражение...
Но в целом ты прав, именно так и происходит... Только вот имена таких процедур/функций известны компилятору, и ТОЛЬКО с ними производится такая проверка. С другими (подпрограммами пользователя) - производится проверка на соответствие заголовку, и если точного соответствия не найдено - ошибка...