在作为结构的一部分创建的数组中使用常量(C)

时间:2014-02-25 21:24:45

标签: c data-structures struct

我目前正在尝试创建一个缓冲区来保存数据,这些数据稍后将通过输出接口通过系统传递出去。此接口最多可接受256个字节的数据。此数据结构的目标如下:

  • 数组需要从单个指针完整读取。 (在这种情况下,缓冲区开始)
  • 它应该有固定数量的标头位,这将导致每个缓冲区。 (这是我正在努力的部分)
  • 您应该能够在没有索引的情况下向结构添加数据(使用buffer_current)
  • 你应该能够判断缓冲区是否快速填满(比较buffer_current和缓冲区结束)

以下是我的代码。

    typedef struct
    {
        int TT1;
        int TT2;
        int Source;
        int Data;
    } Captured_data;

    typedef struct
    {
        void *Buffer_start;
        void *Buffer_current;
        void *Buffer_end;
    } Message_buffer;

void MB_init(Message_buffer *Message_buffer, int Elements)
        {
            Message_buffer -> Buffer_start = (Captured_data *)malloc(sizeof(Captured_data)*Elements+2);
            Message_buffer -> Buffer_current = Message_buffer -> Buffer_start+2;
            Message_buffer -> Buffer_end = Message_buffer + sizeof(Captured_data)*Elements+2;
        }

我想在此缓冲区的开头添加2个字节,即0xAAAA。我最初的反应是添加一个Header_length常量,然后将Header_length添加到malloc的输入中。从那时起,我不知道如何为这两个字节赋值。

编辑:问题的关键是如何在初始化函数中分配Messagebuffer的前两位。

最后一个问题,如果我想将Buffer_start作为Char数组读出,我应该像这样指定那个点:

 Message_buffer -> Buffer_start = (char *)malloc(sizeof(Captured_data)*Elements);

这意味着我正在分配一个大小为Char的数组(sizeof(Captured_data * Elements)。然后使用memcpy根据Buffer_current指向的内容将值直接加载到缓冲区中。

0 个答案:

没有答案