Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Перенаправление указателя при перегрузке оператора в variadic template - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Голосовое управление. Активация записи http://www.cyberforum.ru/cpp/thread1424001.html
Здравствуйте! Хочу добавить в свой проект умного дома голосовое управление. Нужно несколько команд - включить свет/выключить свет/открыть жалюзи и т.д. С распознаванием команды проблем быть не...
C++ RAW сокет нужен рабочий пример создания сырого сокета З.ы под windows Добавлено через 20 минут нашел такой код, под хрюшей работает збс, но в 7 неработает, как можно это исправить? и можно ли это... http://www.cyberforum.ru/cpp/thread1423999.html
Молодой поэт и программирование C++
Всем доброго времени суток!!!! Я на форуме первый день надеюсь, что мне помогут или дадут хороший совет. Мне надо написать программу или что-то вроде нее, которая решает мою проблему. Я почти всю...
ГОСТ для C++ C++
Ребят как правильно оформлять код программы, по какому госту?!
C++ Настройка Oracle Solaris Studio под Windows http://www.cyberforum.ru/cpp/thread1421315.html
скачал Oracle Solaris Studio но похоже она только для Solaris, OpenSolaris, Linux - есть ли возможность её Microsoft Windows ?
C++ Построить таблицу, содержащую проценты голосов, отданных командам Помогите пожалуйста, не могу запустить. Выбивает постоянно ошибку при запуске и не могу понять почему. Вот условие: В спортивных соревнованиях участвуют n команд. В файле SPORT содержатся... подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
21.04.2015, 20:24
То, что ты не понимаешь, о чём я говорю, не значит, что я занимаюсь пустословием. Это значит, что тебе надо восполнять пробелы в знаниях, а также внимательно перечитывать непонятные места.
Так уж и быть, объясню повторно, специально для сумрачных гениев. Функция atof возвращает 8-байтовый double, согласно cdecl calling convention, это значение возвращается в регистрах EAX и EDX. В функции call написано:
C++
1
r = ((func_type)fun) (args...);
, причём про fun компилятор думает, что он возвращает твой union, занимающий 4 байта, а r в нашем случае - ссылка на v[1][2].d. То есть, половина вернувшегося числа, содержавшаяся в EAX, попадает в сыром виде внутрь v[1][2].d. Другая половина данных игнорируется. После того, как эти полчисла туда занесены, ты обращаешься с этой переменной как с указателем на double, каковым её содержимое категорически не является, и получаешь закономерный результат.
Как исправить - тут уж сам страдай, я в эту невменяемую кашу со стиранием типов лезть не хочу.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru