-
- Ну, во-первых, пока EEPROM не кончился, утаптывать эту структуру -
пустая трата времени. - SciFi(26.04.2023 13:41)
- Может быть критично время, требуемое для записи, например, при
пропаже питания. Ещё, я всегда делаю выравнивание износа. Меньше
данных - меньше износ, могу чаще писать за время жизни изделия без
риска отказа памяти. - Nikolay_Po(26.04.2023 13:44)
- Сова на глобусе, так вижу. - SciFi(26.04.2023 13:48)
- Лучше ты свое занудство на работу напряги(с) Почему __INTADDR__ то
работает то не работает? IBAH(24 знак., 26.04.2023 13:54)
- Возьми смещения членов штатно, с помощью offsetof(). И сравни
разности между соседними смещениями с sizeof(члена), а сумму
offsetof(члена) и sizeof(типа) последнего члена структуры с
размером структуры. Если совпало - значит упаковано верно. Правда,
как закатать это в макрос препроцессора - я ХЗ. - Nikolay_Po(26.04.2023 14:01)
- Я уже победил, вот так отлично работает #define PROVERKA(var)
typedef struct {int var##TmpVar : !((offsetof(IntEEPROM_t,
var))%sizeof((((IntEEPROM_t*)0)->var)));} TmpVar##var;. Просто
непонятки с __INTADDR__, хочу все знать - IBAH(26.04.2023 14:04)
- Спасибо. Интересно. Как я понял, проверяется выравнивание положения каждого члена структуры (или вообще, любой переменной) по размеру её типа. Верно? Макрос, правда, получился для конкретного типа струткуры, IntEEPROM_t. Можно сделать универсальный, для любых типов структур? Nikolay_Po(305 знак., 28.04.2023 09:44)
- Я уже победил, вот так отлично работает #define PROVERKA(var)
typedef struct {int var##TmpVar : !((offsetof(IntEEPROM_t,
var))%sizeof((((IntEEPROM_t*)0)->var)));} TmpVar##var;. Просто
непонятки с __INTADDR__, хочу все знать - IBAH(26.04.2023 14:04)
- Возьми смещения членов штатно, с помощью offsetof(). И сравни
разности между соседними смещениями с sizeof(члена), а сумму
offsetof(члена) и sizeof(типа) последнего члена структуры с
размером структуры. Если совпало - значит упаковано верно. Правда,
как закатать это в макрос препроцессора - я ХЗ. - Nikolay_Po(26.04.2023 14:01)
- Уж так повелось, максималист я. - Nikolay_Po(26.04.2023 13:49)
- Лучше ты свое занудство на работу напряги(с) Почему __INTADDR__ то
работает то не работает? IBAH(24 знак., 26.04.2023 13:54)
- Сова на глобусе, так вижу. - SciFi(26.04.2023 13:48)
- Может быть критично время, требуемое для записи, например, при
пропаже питания. Ещё, я всегда делаю выравнивание износа. Меньше
данных - меньше износ, могу чаще писать за время жизни изделия без
риска отказа памяти. - Nikolay_Po(26.04.2023 13:44)
- Ну, во-первых, пока EEPROM не кончился, утаптывать эту структуру -
пустая трата времени. - SciFi(26.04.2023 13:41)