Получить анонимную структуру sizeof внутри объединенияC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Получить анонимную структуру sizeof внутри объединения

Сообщение Anonymous »

Надеюсь, это не повторяющийся вопрос, но я тщательно искал и не нашел конкретного случая раньше.

У меня есть простая структура, к которой я также хочу иметь доступ как к простому массиву байтов

Код: Выделить всё

union
{
struct
{
unsigned char a;
unsigned char b;
// ... Some other members ...
unsigned char w;
};
unsigned char bytes[sizeof( what? )];
} myUnion;
Обратите внимание, что структура не имеет имени и ей также не присвоено собственное имя члена. Это сделано для того, чтобы я мог использовать myUnion.a для доступа к этому члену, а не myUnion.myStruct.a.

Однако без каких-либо name, как я могу получить размер структуры для myUnion.bytes[], кроме вычисления вручную каждый раз, когда я что-то меняю?

Мой текущий обходной путь заключается в использовании #define для устранения проблемы myUnion.myStruct, но это имеет отрицательный побочный эффект, заключающийся в нарушении автозаполнения в редакторе, а также затрудняет работу с моими структурами данных. понять.

Есть идеи?

Примечание: Это работает на 8 -битный процессор. Никаких проблем с выравниванием слов и тому подобным нет. Тем не менее, вероятно, следует указать любые предостережения, чтобы кто-то другой не использовал предложенное решение ненадлежащим образом.

Подробнее здесь: https://stackoverflow.com/questions/235 ... side-union
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»