|
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
|
|
Что за тип данных uint32_t?30.07.2019, 22:34. Показов 40456. Ответов 171
Метки нет (Все метки)
0
|
|
| 30.07.2019, 22:34 | |
|
Ответы с готовыми решениями:
171
Как побитово скопировать uint32_t в float, минуя при этом выделения uint32_t в оперативную память
Скажите пожалуйста, что это за тип данных?! |
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||||||||||
| 18.08.2019, 18:19 | |||||||||||
|
Given an object with effective type T1, using an lvalue expression (typically, dereferencing a pointer) of a different type T2 is undefined behavior, unless: T2 and T1 are compatible types. T2 is cvr-qualified version of a type that is compatible with T1. T2 is a signed or unsigned version of a type that is compatible with T1. T2 is an aggregate type or union type type that includes one of the aforementioned types among its members (including, recursively, a member of a subaggregate or contained union). T2 is a character type (char, signed char, or unsigned char).
0
|
|||||||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
|
|||||||
| 18.08.2019, 20:25 | |||||||
|
Да и занимать целую регистровую пару под начало массива, который нужен где-то раз в вечность (типичный период переключения цифр при динамической индикации - миллисекунды, это очень долго) вряд ли кто-то станет. Что еще хуже, эффективность такого варианта не будет выше, чем обычного.
0
|
|||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||||||||
| 18.08.2019, 21:04 | |||||||||
|
Ради 1% квадратных корней достаточно завести модификатор shoot_foot. Сишники же требуют чтоб им дали подобные хаки по умолчанию и плевать что они ломают оптимизацию в 99% кода.
0
|
|||||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
|
|||||||||||||||||||
| 19.08.2019, 08:36 | |||||||||||||||||||
|
На самом деле проблема в представлении чисел и порядке байтов, именно поэтому UB. Но если программист знает что делает - флаг в руки. А если портов больше? Вы выделяете память под N массивов и вынимаете из маску из каждого. А ведь наложение маски это 3 такта: чтение, модификация, запись (in; or/and; out), тогда как работа с одним битом это один такт (cbi/sbi). Кликните здесь для просмотра всего текста
;подготовка указателя на массив
Вариант на макросах тратит 3 такта на бит, то есть строго 21 такт на все 7 бит:
0
|
|||||||||||||||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||||||
| 19.08.2019, 13:17 | ||||||||||
|
За касты intPointer=doublePointer вам C++ компилятор даст по рукам. Касты intPointer=(int*)doublePointer банально удобнее километрового reinterpret_cast. Но clang может плеваться на них варнингом. Тоже самое со struct. С удовольствием его выкинем, когда поля class сделают публичными по умолчанию. Эллипсисы используются в сигнатуре некоторых экспортируемых сишных функций. Это да, совместимость. В плюсах для того же самого уже есть variadic templates. По битам - для двух портов 8*2 все равно будет меньше чем 3*7. И сценарий "семь выводов на двух портах" явно более вероятен чем сценарий "семь выводов на семи портах". Если же нужно вот прям на любой сценарий закладываться, то дует switch по usedBits. Макросы опять же не при делах.
2) Можно также слазать в в operator "" _pin и поставить там проверку времени компиляции.
0
|
||||||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
|
|||||
| 20.08.2019, 12:31 | |||||
|
Если сырые указатели нужны только для всякой экзотики - почему они сделаны такими простыми в доступе? Вот для всякой экзотики было бы логично усложнить работу, чтобы программист трижды подумал, так ли уж это необходимо. Если "intPointer=(int*)doublePointer банально удобнее километрового reinterpret_cast" то зачем было вводить последний? Иначе говоря, зачем для реализации одного и того же сделано два способа? reinterpret_cast же наверное не просто так вводили. Со struct - если бы хотели выкинуть - давно бы выкинули. Зная любовь плюсовиков к длинным запутанным выражениям, необходимость всего лишь писать public никого бы не остановила. А еще проще было ввести новое ключевое слово, обозвать struct и class устаревшими и ругаться на них warning'ами. Ну вот не тянет это на причину сохранения подобных рудиментов в языке. Совместимость с Си - тянет. Я тут правильность выбрасывания if(0) отдельно тестирую, потому как мало ли, а вы предлагаете ввести десяток массивов - авось компилятор поймет, что их для красоты вводили. Как вы понимаете, ваш вариант ведь с тем же успехом реализуем на макросах, просто на практике такое извращение обычно не нужно.
0
|
|||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||||||
| 20.08.2019, 14:50 | ||||||||||
|
reinterpret_cast просто идет в нагрузку к static_cast, const_cast и dynamic_cast нужным для проверки корректности каста. Такое же неудачное решение как std::vector<bool> внезапно не умеющий давать ссылки на bool. По struct - в C++ годами хотели сделать noexcept перемещение из одного std::map в другой и все тонуло в бюрократии. Подозреваю, что с удалением struct та же история. Если бы вопрос был только в совместимости с Си, то перед сишными хедерами просто лепили бы #define struct class и все. Это куда проще чем шаманить с синтаксисом.
0
|
||||||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
|
|||||||
| 20.08.2019, 15:48 | |||||||
|
0
|
|||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||
| 20.08.2019, 17:03 | ||||||
|
Добавлено через 25 минут
0
|
||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
|
|||||||||
| 21.08.2019, 12:48 | |||||||||
|
Но по теоретическому функционалу ваш вариант весьма интересен. Осталось допилить его под реализацию конкретного avr-g++ и придумать "скрещивалку" с обычным Си-шным кодом. Сами ведь жаловались на косяки реализации avr-g++. Либо придумывать аналог на макросах, что тоже интересное развлечение. #define PORTB (*(volatile uint8_t *)( 0x18 )), то есть работа непосредственно с памятью.Нет, я вполне допускаю возможность прописать десяток
0
|
|||||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||||
| 21.08.2019, 13:45 | ||||||||
|
1) Делаете хедер в котором лежат только объявления си-стайл showNumber функций. 2) Обрамляете его extern "C" чтобы отрубить манглинг имен. Собственно, все. И для Си, и для плюсов, gcc генерирует одни и те же .o файлы, которые спокойно между собой линкует.
0
|
||||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
|
||||
| 21.08.2019, 14:35 | ||||
|
0
|
||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 21.08.2019, 15:53 | |||
|
Нет у нас никакого AT90S***, есть отладочная эмуляция, работающая на настольном ПК (да, C++ позволяет перенаправить PORTA=123 на красивое окошко в Qt). И будет очень неприятно обнаружить что вылизанная в отладчике программа, попросту не компилируется в целевом контроллере. Исключительно потому что туда заглушек не доложили.
0
|
|||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
|
|||||
| 21.08.2019, 17:40 | |||||
|
Или уже упомянутая мной работа с портами через память. Когда старой архитектуры с ее 64 портами перестало хватать, Atmel приняли вполне логичное решение вынести "лишние" регистры в память. Вот только сгруппировать их по смыслу они не догадались, в результате чего выкинули не только регистры конфигурации (их-то ладно, один раз настроил и забыл), но и регистры данных вроде того же UDR0. Вот не верю я, что так сложно было сгруппировать регистры по частоте обращения. Впрочем, как раз это можно сделать и в юзерском коде, благо делается один раз, а потом кочует из проекта в проект.
0
|
|||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 21.08.2019, 19:03 | |||
|
Понятно, что эмуляция будет крайне грубой, на уровне "просвистеть заранее подготовленные данные". Но совсем от нее отказываться достаточно странно. Отлаживать программу лишь в режиме "контроллер завис, перечитывай код пытаясь понять почему" тоже удовольствие так себе.
0
|
|||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
|
|||||||||||
| 22.08.2019, 13:37 | |||||||||||
|
Добавлено через 3 часа 19 минут 7seg_2.h
0
|
|||||||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||||
| 22.08.2019, 15:33 | |||||
|
Прерывая вполне воспроизводятся на уровне "заморозить основной тред, выполнить обработчик прерывания, разморозить тред". Хотя и не средствами STL. Профилирование да, надо гонять на реальном железе. Но это же не повод вообще от предварительной отладки отказываться. Без заглушек ни отладчик не запустился, ни авто-тесты не запустились. Известно только что код компилируется или не компилируется, а дальше надо за программатором бежать.
0
|
|||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
|
|||||
| 22.08.2019, 16:06 | |||||
|
0
|
|||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||||||||
| 22.08.2019, 18:04 | |||||||||
0
|
|||||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
|
|||||||||||||||
| 23.08.2019, 10:38 | |||||||||||||||
0
|
|||||||||||||||
| 23.08.2019, 10:38 | |
|
std::vector<int> Что это за тип данных?
Восьмибитный тип переменной (что за тип, но не BYTE и не CHAR?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|