![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Возможна реализация компилятора, в которой данне действия будут выполнятся иначе и тогда код в на таком компиляторе станет не деиспособен, вобщем то на VS он тоже пока не работает, но погодите еще немного, сейчас внесем необходимые инструкции . |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
естественно, () это необязательная добавка. Впервые слышу об операторах инициализации. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Ну вот судя по всему борланд и положил на нее глаз )) |
|||
|
||||
| vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Таки уж и стандартные? Стандарт - это язык, а то как, тот или иной производитель компилятора, представляет его в машином коде, это сугубо его личное дело. Сделал реализацию совместимую с VS и BCB, сейчас код выложу. Да комиляторозависимо, но это всеголишь интерфес к библиотеке, сама либа представлена набором функций, и если пользователь не может в силу несовместимости пользоваться простой конструкций, он сможет работать с функциями напрямую. Это сообщение отредактировал(а) vaddsm - 7.9.2008, 20:45 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Стандарты бывают разные. В данном случае шла речь о стандарте соглашений вызова. тут немного замутняет картину то, что используется __fastcall - a oно компиляторозависимое соглашение. |
|||
|
||||
| vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Ужос ___х!
|
|||
|
||||
| vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Точто могу сказать одно, на консрукторы в VS конвенции не распростроняются, что непеши всегда аргументы в стек, this в ecx.
Это сообщение отредактировал(а) vaddsm - 8.9.2008, 02:15 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Это сообщение отредактировал(а) mes - 8.9.2008, 02:54 |
|||
|
||||
| dumb |
|
||||||||||||||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
vaddsm, приведенный тобой кривой костыль не только непонятен/несопровождаем, но и зависим не только от компилятора, но и от опций, а именно: от stack frames и от оптимизации. выключи frames(а в release они по дефолту выключены) или включи оптимизацию - и аля-улю.
косяк, кстати:
как уже было упомянуто, формирование фрэймов в стэке зависит от опции(и от компилера).
в общем случае можно только отсчитать н-ное кол-во фрэймов, и понадеяться, что вызовы шли именно так, как предполагалось.
в данном случае никакой необходимости в этом нет. ...если отключена оптимизация. и это в билдере, не где-то. где-то будет еще веселей. "боги", "гуру"...
|
||||||||||||||||
|
|||||||||||||||||
| vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
dumb, Спасибо, сейчас по пунктам отработаю приведенные вами замечания!
Вот пример, у меня работает при любом виде конструктора TAnyClass в средах BCB и VS. С опциями оптимизации, я пока не проработал.
... TAnyClass *x = new TAnyClass(); Коменты будут. P.S Права на чтение сегмента памяти не выставил, в следующем варианте будут. Добавлено @ 04:44 В Борланде работает при любых опциях оптимизации. А в релизе пока нет. Это сообщение отредактировал(а) vaddsm - 8.9.2008, 04:48 |
|||
|
||||
| vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
|
|||
|
||||
| Lazin |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
блин, так и не понял, зачем пихать ук. на функцию в DWORD?
вместо
вполне прокатит
ведь ты вегда вызываешь один и тот-же метод в конструкторе, кстати, что будет, если пользователь в своем классе, захочет создать ф-ю с именем CallMethod? Добавлено через 1 минуту и 39 секунд
|
||||||
|
|||||||
| vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Lazin, CallMethod где? ГИДЕ? Он в TAnyClass, а ты this передаеш какой? На TMyLibInterface.
Это пример, в реали этот метод будет называться, где-то так: void hey_guy_do_never_try_to_name_method_like_this_f_king_long_method_name(void); Короч, универсального решения той задачи, которую я ставил изначально нет, есть частные вполне рабочие реализации, но в жизни совершенно неприменимые. Так, что в утиль. А лучше отдельной статьёй как делать ненадо. Хотя я сейчас еще гляну, как коверкается код при оптимизации, мож че придумаю и на этот раз |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |