ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 июля
1304730 Топик полностью
Nikolay_Po (28.04.2023 09:44, просмотров: 135) ответил IBAH на Я уже победил, вот так отлично работает #define PROVERKA(var) typedef struct {int var##TmpVar : !((offsetof(IntEEPROM_t, var))%sizeof((((IntEEPROM_t*)0)->var)));} TmpVar##var;. Просто непонятки с __INTADDR__, хочу все знать
Спасибо. Интересно. Как я понял, проверяется выравнивание положения каждого члена структуры (или вообще, любой переменной) по размеру её типа. Верно? Макрос, правда, получился для конкретного типа струткуры, IntEEPROM_t. Можно сделать универсальный, для любых типов структур? 

Выравнивание автоматически получается, если объявить структуру упакованной и расположить члены в порядке убывания размера. Но такая проверка необходима, если тип члена структуры может поменяться извне, в родительском заголовочном файле, например, особенно, если над кодом работают несколько программистов.