|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.06.2017, 13:51 | #51 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Вот подробнее про qmake
https://stackoverflow.com/questions/...ile-with-qmake А вот про aliasing, похоже на С++ ток через memcpy само переносимо, и надеяться на оптимизацию: http://dbp-consulting.com/tutorials/StrictAliasing.html |
21.06.2017, 13:55 | #52 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Т.е. вот такой вариант:
Код:
Последний раз редактировалось alexzk; 21.06.2017 в 14:21. |
21.06.2017, 15:56 | #53 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Не понял зачем там enable_if.
Ну и размер лучше проверить: Код:
|
21.06.2017, 17:01 | #54 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
чтоб только указатели преобразовывались. Для остального оно нафик не над. Кому вдруг нада - можно убрать Последний раз редактировалось alexzk; 21.06.2017 в 17:04. |
|
21.06.2017, 18:47 | #55 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
т.е. и T и Src - указатели?
Тогда это не спасет от нарушения strict-aliasing в коде, который будет использовать такой union_cast. Код:
Как видим, адрес в p совпадает с адресом переменной x, только вот вывод интересный. ))) |
21.06.2017, 20:36 | #56 | ||
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
Вот, даже явно задал -fstrict-aliasing и он не возникает даже там, где нужен ... Код:
Цитата:
Последний раз редактировалось alexzk; 21.06.2017 в 20:39. |
||
21.06.2017, 20:44 | #57 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
...а в вашем примере тоже все верно, вывод из мейн
1.4822e-322 30 это и есть корректно - в 1 память записалось, а вот в foo, как-то соптимизировалось (т.е. он 1 константу по указателю положил, и сразу же ее на экран отправил, а в памяти таки изменилось, что видно в мейн дальше), т.к. вы не выполняете над переменными действий. Вот если форсировать компилер, и сказать, что значения меняются внутир фуу: Код:
32 4629700416936869888 value d:0x7ffe41f99030 value p:0x7ffe41f99030 32 4629700416936869888 Последний раз редактировалось alexzk; 21.06.2017 в 20:50. |
21.06.2017, 22:03 | #58 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
..кароче да, шото я фигню понаписал - удалил из проекта тот юнион_каст совсем, у меня он не нужен был, а чужим сырцам запретил алиасинг. После перепрочтения кода, оказалось, я это придумал из-за тяжкого наследия С, типа указатели в либу приводить unsigned char <---> char. Вернул reinterpret_cast, т.к. это можно.
Последний раз редактировалось alexzk; 21.06.2017 в 22:16. |
22.06.2017, 00:38 | #59 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Код:
Код:
|
22.06.2017, 06:55 | #60 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
Последний раз редактировалось alexzk; 22.06.2017 в 07:15. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
MMX сложить два числа | gansm | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 13 | 29.10.2010 05:16 |
как сложить два числа с плавающей точкой | forsy | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 19 | 29.03.2010 02:15 |
Макрос: сложить два числа | белочка | Microsoft Office Excel | 6 | 23.12.2009 22:02 |
Сложить два числа и вывести результат на экран | We1c0m3 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 23.05.2009 11:41 |
Сложить два числа | iwaniwan | Win Api | 3 | 23.04.2009 06:27 |