Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 210

/ вопрос открыт /

Приветствую, уважаемые эксперты! Помогите, пожалуйста ответить на вопрос:
Процедуры и функции - коллизия обозначений и стек исполнения.

s_ksuha Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: s_ksuha (статус: Посетитель)
Вопрос отправлен: 18 декабря 2007, 20:59
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, s_ksuha!
коллизия обозначений? Скорее всего имеется ввиду то, что имеем две или больше функции с одинаковым именем. (в делфи можно, если добавить слово overload, о турбопаскале не помню, не буду утверждать) и компилятор не может выбрать, какой с прототипов ему подходит. например

procedure Foo(x:integer);overload;
procedure Foo(x:integer; z:integer = 1);overload;
 
//Такой вызов нормально
foo(1,2);
//А такой нет - компилятор не может определить, какая с перегруженных функций подходит
foo(2)

По поводу стека исполнения. Для платформы х86 стек общий для всех, хотя тут наверно имелось в виду абстрактное понятие.
Стек исполнения актуален при рекурсии, когда функция вызывает сама себя. тогда в стек складываются все локальные параметры (на самом деле они там уже есть, но это другое дело) и адрес текущей инструкции. после чего запускается функция. при выходе с функции восстанавливается адрес и локальные переменные.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 19 декабря 2007, 12:44


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:52
Выполнено за 0.03 сек.