|
0 / 0 / 0
Регистрация: 26.09.2022
Сообщений: 3
|
|
Выравнивание структур26.09.2022, 15:44. Показов 1429. Ответов 9
Сегодня во время рабочего процесса столкнулся с забавным явлением.
В рамках актуализации Легаси кода в ТЗ было указана замена в структурах char(C) на unsigned char(UC). Выполнив все указания, было обнаружено, что размер структуры с UC превышает размер структуры с С на 48 байт с учётом того, что любые другие поля изменениям не подвергались. Изначально предположил, что проблема в выравнивании, но #pragma push до нужного размера все равно не могла сжать структуру. Соответственно, вопрос, откуда могут взяться 48 лишних байт призамене C на UC, если оба типа данных однобайтовые?
0
|
|
| 26.09.2022, 15:44 | |
|
Ответы с готовыми решениями:
9
Выравнивание структур Выравнивание структур Выравнивание структур |
|
Злостный нарушитель
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
|
|
| 26.09.2022, 16:01 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2022
Сообщений: 3
|
|
| 26.09.2022, 16:18 [ТС] | |
|
Verevkin, не имею права, секретная информация. Да и вопрос собственно направлен не столько на рассмотрение конкретной структуры, сколько о неявных отличиях UC о C в контексте применения. Тем более вопрос уже решен применением int8.
0
|
|
|
Злостный нарушитель
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
|
|||
| 26.09.2022, 16:22 | |||
![]() Кстати, в таких случаях в первую очередь надо проверить sizeof() применяемых типов для данного компилятора.
0
|
|||
|
0 / 0 / 0
Регистрация: 26.09.2022
Сообщений: 3
|
|
| 26.09.2022, 16:33 [ТС] | |
|
Verevkin, оба типа однобайтовые. Это проверено. А по поводу секретности - так оно и есть, в подробности вдаваться не хочу.
Вопрос о неявных различиях типов ещё открыт.
0
|
|
|
Злостный нарушитель
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
|
|
| 26.09.2022, 16:35 | |
|
0
|
|
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,098
|
||
| 26.09.2022, 20:59 | ||
|
Demid228, если всё такое секретное, то минимальный компилируемый пример структуры с демонстрацией проблемы - в студию!
Добавлено через 3 минуты Demid228, на всякий случай: unsigned char,char, signed char - это три разных типаuint8_t
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 26.09.2022, 22:31 | |||
|
Явно кроме замены C на UC, еще чего то дернули. ![]() К тому же, "секретная структура" может зависеть от максимального значения используемого типа. Ну и еще 100500+ вариантов.
0
|
|||
|
106 / 93 / 44
Регистрация: 26.07.2015
Сообщений: 197
|
||
| 27.09.2022, 14:58 | ||
|
Какой компилятор? GCC? Clang? MSVC? DPC++? IAR?
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||
| 29.09.2022, 16:34 | |||
0
|
|||
| 29.09.2022, 16:34 | |
|
Помогаю со студенческими работами здесь
10
Выравнивание структур Компилятор \ Настройка \ Выравнивание структур Выравнивание структур. Битовые поля Структуры.Обработка массивов структур.Создать массив структур из 10-ти элементов Блочная сортировка структур (Отсортировать массив структур по фамилии) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|