SciFi (12.01.2012 18:05, просмотров: 106) ответил MegaJohn на имеется программный модуль, который собирает статистику в неупакованную стрктуру. А вот наружу нужно отдать упакованную структуру. Делать тупое присваивание полей struct_pak.fieldN = struct_unpak.fieldN; (но это как то тягомотно ) или же придумать
Я бы сделал функцию-сериализатор, причём объявлять упакованную структуру не нужно, достаточно писать просто в буфер байт за байтом. Можно даже автоматизировать это дело, применив макросы: файл stats_struct.h:
STRUCT_FIELD(char, c)
STRUCT_FIELD(int, i)
файл stats.h:
#define STRUCT_FIELD(type, name) type name;
struct stats
{
#include "stats_struct.h"
};
#undef STRUCT_FIELD
#define STRUCT_FIELD(type, name) sizeof(type),
int stats_sizes[] =
{
#include "stats_struct.h"
};
#undef STRUCT_FIELD
#define STRUCT_FIELD(type, name) offsetof(stats, name),
int stats_offsets[] =
{
#include "stats_struct.h"
};
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้