ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 июля
1303734 Топик полностью
LightElf (24.04.2023 14:34, просмотров: 217) ответил _LightElf на Я просто проверяю размер структуры на этапе компиляции через STATIC_ASSERT. Если размер разошёлся - значит где-то косяк.
Как-то так: 
#if 1 
# define STATIC_ASSERT_CONCAT_1(x, y) x##y
# define STATIC_ASSERT_CONCAT(x, y) STATIC_ASSERT_CONCAT_1(x, y)
# define STATIC_ASSERT(cond, msg) \
typedef struct { int STATIC_ASSERT_CONCAT(static_assertion_failed_, msg) : !!(cond); } \
STATIC_ASSERT_CONCAT(static_assertion_failed_, __COUNTER__)
#else
# define STATIC_ASSERT(COND,MSG)
#endif

/** * @brief PWM controller */ typedef struct { __IO uint8_t OUT_EN; /*!< PWMx Output Enable Register, Address offset: 0x00 */ __IO uint8_t POLAR; /*!< PWMx Polarity Configuration Register, Address offset: 0x01 */ __IO uint8_t CONFIG; /*!< PWMx Configuration Control Register, Address offset: 0x02 */ __IO uint8_t CLKDIV; /*!< PWMx Clock Divider Register, Address offset: 0x03 */ __IO uint8_t DATA[8]; /*!< PWMx Data Holding Registers, Address offset: 0x04 */ } PWM_Type; /* Check correct structure packing */ STATIC_ASSERT((sizeof(PWM_Type) == 0x0C), PWM_Type);
Не надо делать мне как лучше, оставьте мне как хорошо