![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Logo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Нужно сделать так, что бы конструктор обьекта не менял значение регистров в месте своего вызова.
Вернее так, что бы регистры были доступны в конструкторе в неизменном виде, из места, где вызван конструктор. Пытаюсь обьявить его как __cdecl или __stdcall
GCC все понимает корректно. Но Visual C++, хотя и не сообщает об ошибке, все равно компилирует как thiscall. Можно ли его научить правильно воспринимать код? Это сообщение отредактировал(а) Logo - 13.3.2012, 04:21 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
а как ты определил что VS меняем именно на thiscall ??????
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Logo, ты случаем не пытаешься линковать библиотеку классов созданную одним компилятором, к программе, созданной другим? Если так, то тебя ждет еще не мало "приятных" сюрпризов.
|
|||
|
||||
| Logo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Как-как, откомпилировал, загрузил в дизасемблер, могу подробнее описать, как, если интересно. Если че, в IDA даже есть плагин псевдо-декомпилсятор, который весьма точно показывает C код функции, в том числе и тип вызова. Но лучше наверно в ручную, там элементарно)
Добавлено через 7 минут и 33 секунды bsa Нет, пытаюсь скомпилить даже самый простой пример, игнорирует он __stdcall, и все тут...
Добавлено через 12 минут и 10 секунд Тоже самое в GCC компилится корректно... |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Logo, может MSVC считает, что для нестатических методов вызовы должны быть __thiscall. А все другие модификаторы просто игнорирует. Где-нибудь написано, что __stdcall поддерживается для методов?
|
|||
|
||||
| Logo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Не знаю, но ошибок и предупреждений он не выдает.
Версия 13.10.3077 for 80x86 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |