[an error occurred while processing this directive]
Это "правильно" нельзя сделать
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Тумблер 10 августа 2006 г. 20:30
В ответ на: Никак не могу понять почему нельзя так сделать.... :( отправлено =NIK= 10 августа 2006 г. 15:44


Компилятор сопротивляется потому, что запуск не-статической
процедуры требует обязательноой предварительной
загрузки базового регистра.
Например запись:
ClassPtr->SomeRoutine(..)
буквально означает:
1. загрузить базовый регистр адресом конкретного экземпляра класса.
2. после чего запустить процедуру SomeRoutine(...)

Поэтому выполнение сразу пункта 2 неправильно.
Просто ахинея. Приведет к бессмысленным последствиям.
Пример, который я приводил ранее просто ошибка конкретного компилятора. Не уверен, что это есть у всех компилеров разных фирм.
У функций static все наоборот.
1. сначала запуск процедуры
2. после чего загрузить базовый регистр, если нужно:
(для доступа к не-статическим членам класса)
static SomeRoutineStatic (...)
{
..
ClassPtr->SomeRoutine___ (...)
..
}

Это обычный прием для создания классов-окна, диалога и.т.д.
Поищи в Сети - запросто найдешь исходные тексты.


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание