Есть ли способ принудительно установить порядок байтов для структур C или C ++?

Я видел несколько вопросов и ответов, касающихся порядка байтов структур, но они касались определения порядка байтов в системе или преобразования данных между двумя разными порядками байтов.

Что бы я хотел как сейчас, однако, если есть способ принудительно установить конкретный порядок байтов данной структуры . Есть ли какие-нибудь хорошие директивы компилятора или другие простые решения, помимо переписывания всего этого из множества макросов, управляющих битовыми полями?

Общее решение было бы неплохо, но я был бы также доволен конкретным решением gcc.

Редактировать:

Спасибо за все комментарии, указывающие на то, почему не рекомендуется применять порядок байтов, но в моем случае это именно то, что мне нужно.

Большой объем данных генерируется определенным процессором (который никогда не изменится, это встроенная система со специальным оборудованием), и она должна быть прочитана программой (над которой я работаю), работающей на неизвестном процессоре. Побайтовая оценка данных была бы ужасно хлопотной, потому что она состоит из сотен различных типов структур, огромных и глубоких: в большинстве из них есть много слоев других огромных структур внутри.

Изменение программного обеспечения для встроенных систем. о процессоре не может быть и речи. Источник доступен, поэтому я намерен использовать структуры из этой системы вместо того, чтобы начинать с нуля и оценивать все данные побайтово.

Вот почему мне нужно сообщить компилятору, какой порядок байтов он должен использовать, это не имеет значения, насколько оно будет эффективным или нет.

Это не обязательно должно быть реальным изменением порядка байтов. Даже если это всего лишь интерфейс, и физически все обрабатывается в порядке байтов процессора, для меня это вполне приемлемо.

25
задан vsz 18 July 2011 в 14:24
поделиться