Цель
Я пишу сетевую программу в C (в частности gnu89
), и я хотел бы упростить вещи, переинтерпретируя определенный struct X
как большой массив байтов (aka char
), отправляя байты по сети, и переинтерпретировать их как struct X
с другой стороны. Для этого я решил использовать gcc __attribute __ ((__ставляется__)). Я сделал все возможное, чтобы убедиться, что это сделано правильно (т.е. Я учитывал сущность и другие связанные проблемы).
Вопрос
Кроме того, что struct X
как можно меньше, gcc гарантирует, что a struct
, определенный с __attribute __ ((__ставляется__)), сохраняет исходный порядок? Я провел много исследований, и мне еще предстоит найти документацию о том, существует ли эта гарантия.
Примечания
Можно с уверенностью предположить, что и отправитель, и получатель не будут иметь проблем с переносимостью (например, sizeof(int)
на сервере равно sizeof(int)
на клиенте).