C / C ++: независимый от платформы способ обработки структур и битовых полей - PullRequest
0 голосов
/ 26 августа 2011

Я работаю над проектом по преобразованию древнего целевого приложения Solaris (sparc) в Linux.Язык C / C ++, и большая часть кода была написана инженерами-электронщиками, то есть людьми, которые много работают со встроенными устройствами.

Таким образом, союзы и битовые поля используются повсеместно,Довольно просто разобраться со структурами и так далее, которые не включают битовые поля или объединения, но из-за соглашения, для которого бит интерпретируется как MSB или LSB, а также порядка байтов, может быть довольно раздражающим преобразовывать код вx86 linux.

Я ищу чистую методологию для переноса этого старого кода в 21-й век.Любые предложения (примеры, научные статьи, технические документы, предложения книг и т. Д.) Приветствуются.

1 Ответ

1 голос
/ 06 сентября 2011

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

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

...