Я подумываю использовать в своем проекте RSS или Atom, но также "улучшить" фид с помощью моих собственных специальных атрибутов, специально используемых моим проектом.
Итак, у меня есть два вопроса:
1) Какой наиболее часто используется RSS и Atom в Интернете и на крупных сайтах?
2) Из чего лучше всего строить, добавляя собственные теги?
Обновление:
Итак, RSS чаще всего используется, но я должен выбрать Atom, так как мне нужно сделать свои собственные настройки в ленте? Если RSS более популярен, почему бы не выбрать это? Почему не {message_base base; параметры message_with_parameters; reply_message ответ; buffer_t * buffer; // не могу ...
У меня есть это объединение:
typedef union Message { message_base base; message_with_parameters parameters; reply_message reply; buffer_t *buffer; // can't figure out what to put here } message;
message_with_parameters
имеетmessage_base
в качестве первого поля, аreply_message
имеетmessage_with_parameters
как первое поле, которое в свою очередь имеетmessage_base
как первое поле.
Таким образом, в основном я могу получить доступ к любому из них, и я все равно получу все необходимые данные, однако я получаю буфер из своего драйвера, и теперь я хочу сериализовать его в сообщение.
Я уже знаю, что указатель на буфер неправильный, так как он не будет соответствовать моим структурам, но у меня не может быть буфера фиксированного размера.
Где-то по пути я хочу сделать это:m->buffer = buff->payload;
И независимо от того, какой у меня тип данных, он все равно будет сериализован.
Как это можно сделать?РЕДАКТИРОВАТЬ:
Вот мои структуры:typedef struct MessageBase { uint32_t u32DeviceID; uint32_t u32CoreID; uint16_t u16Class; uint16_t u16CRC; uint8_t u8OpCode; void (*states [MAX_OPCODES]) (void *); } message_base; typedef struct MessageWithParameters { message_base base_class; uint8_t u8Param1; uint8_t u8Param2; } message_with_parameters; typedef message_with_parameters reply_message; typedef union Message { message_base base; message_with_parameters parameters; reply_message reply; } message;
потому что данные в буфере не являются частью объединения.
buffer_t * buffer является указателем, поэтому указатель является частью объединения, а не данными, на которые он указывает
, вы, вероятно, захотите сделать что-то вроде
m = (message*) buff->payload;