Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449

Каст float* к DWORD*

11.06.2018, 16:18. Показов 1773. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Некоторое время мучает вопрос
В directx 9 есть функция SetRenderState принимающая DWORD в качестве аргумента, но реально принимающая также и float
В книгах и на MSDN(https://msdn.microsoft.com/ru-... s.85).aspx) дан пример каста float* к DWORD* с последующим разыменованием
Нарушение strict aliasing rule или нет?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2018, 16:18
Ответы с готовыми решениями:

опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing
#include<stdio.h> #include<stdlib.h> #include<math.h> float f1(float x)/*vira*enie 1*/ {return (x*cos(x))/(1+ pow(x,2));} ...

Не понимает Dictionary<string, (float[][] train, float[][] valid, float[][] test)> DataSet;
Доброго времени суток. Пытаюсь запустить пример по работе с библиотекой. Не понимает конструкцию Dictionary&lt;string, (float train,...

Каст объектов
Допустим у меня есть класс А, который кастится до Object и записывается в лист. Что нужно, что-бы закастить Object к А (допустим...

5
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
11.06.2018, 16:59
Цитата Сообщение от h3mbr0 Посмотреть сообщение
Нарушение strict aliasing rule или нет?
да
Но без этого не обойтись, т.к. перегрузки IDirect3DDevice9::SetRenderState с void * или float* не создано
0
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
11.06.2018, 17:06  [ТС]
Цитата Сообщение от TRam_ Посмотреть сообщение
Но без этого не обойтись
Почему не memcpy?
Я к тому, почему в литературе и официальных источниках прямо советуют нарушать strict aliasing rule, как бы плох он не был, даже не делая никаких ремарок по этому поводу
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
11.06.2018, 20:01
Цитата Сообщение от h3mbr0 Посмотреть сообщение
как бы плох он не был
Размер данных типов одинаков, вот микрософтовцы решили не заморачиваться. Так-то да, можно

C++
1
2
3
4
float Start   = 0.5f;
DWORD D_Start;
memcpy(&D_Start, &Start, sizeof(DWORD ));
g_pDevice->SetRenderState(D3DRS_FOGSTART, D_Start);
но это будет несколько медленнее, чем в "костыле по умолчанию" (т.к. такой код не может быть оптимизирован компилятором к прямому копированию байтов со значением 0.5f)
1
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
11.06.2018, 20:06  [ТС]
Цитата Сообщение от TRam_ Посмотреть сообщение
решили не заморачиваться
Все же, нарушать стандарт и не уведомлять об этом...

Цитата Сообщение от TRam_ Посмотреть сообщение
такой код не может быть оптимизирован компилятором к прямому копированию байтов со значением 0.5f
Но ведь может заоптимизировать std::copy, хотя он и плюсовый
Правда, как и memcpy он, вроде как, полагаются на определенный endianness

Может быть, все-таки существует другое разумное оправдание сабжа?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
11.06.2018, 20:28
Цитата Сообщение от h3mbr0 Посмотреть сообщение
существует другое разумное оправдание сабжа?
не захотелось мелкософтовсцам делать HRESULT IDirect3DDevice9::SetRenderState(D3DRENDERSTATETYPE State, float Value); по историческим причинам и/или стремлению к компактности набора функций.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2018, 20:28
Помогаю со студенческими работами здесь

Каст this к std::string
Возможно ли скастовать указатель this к std::string так, что бы в std::string оказался адрес текущего объекта в символьном представлении

Reflection каст типов
static void Main(string args) { object h = new object { 12, &quot;qwerty&quot;, new Random(), 'a' }; ...

Как работает каст?
Как работают разные cast'ы? Имею ввиду именно сам принцип работы на &quot;низком уровне&quot; к примеру есть у меня char который весит байт и...

Каст int[] в double[]
Добрый день! Просьба подсказать как кастовать элементы массива типа int в эл. массива типа double Мне необходимо переопределить...

Как происходит каст типов
Все знаю правила, что родителя нельзя привести к потомку (машину нельзя привести в БМВ). Сегодня увидел такое чудо: HttpWebRequest q =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru