У меня проблема с проверкой структуры - во время компиляции - если она хорошо выровнена или содержит пробелы. Проверка может быть выполнена в дополнительном тестовом коде, но я не хочу, чтобы "упакованные" данные были в реальном коде реализации.
Это пример файла заголовка (MyData.h) с типичными атрибутами include:
#ifndef MYDATA_H_
#define MYDATA_H_
struct uneven
{
int bla_u32;
short bla_u16;
char bla_u8;
/* <-- this gap will be filled in the unpacked version */
};
#endif // MYDATA_H
Я нашел одно возможное решение - см. ниже.
Вопросы:
-
Есть ли элегантный способ проверить, содержит ли struct
uneven
другое количество байтов по сравнению с его распакованным экземпляром во время компиляции? -
Может быть, даже решение, которое будет работать в C (без использования пространства имен)?