Создание и использование кроссплатформенной структуры на C ++

Я пишу кроссплатформенную игру с сетевые возможности (с использованием SFML и RakNet ), и я дошел до того момента, когда я скомпилировал сервер на моем сервере Ubuntu и запустил клиент на моем Mac. Вся разработка ведется на моем Mac, поэтому я изначально тестировал сервер на нем, и он работал нормально.

Я отправляю struct по сети, а затем просто отбрасываю их обратно из char * в (например) inet :: PlayerAdded . Теперь это работает нормально (по большей части), но мой вопрос: всегда ли это будет работать? Это кажется очень хрупким подходом. Будет ли структура всегда выкладываться одинаково даже на других платформах, например в Windows? Что бы вы порекомендовали?

#pragma pack(push, 1)
struct Player
{
    int dir[2];
    int left;
    float depth;
    float elevation;
    float velocity[2];
    char character[50];
    char username[50];
};

// I have been added to the game and my ID is back
struct PlayerAdded: Packet
{
    id_type id;
    Player player;
};
#pragma pack(pop)

7
задан Erik Rothoff 18 November 2010 в 15:43
поделиться