带结构

时间:2015-11-28 20:09:23

标签: c struct information-hiding

我主要使用National Instruments的Labwindows CVI作为我的编译器。

我必须创建一个设备接口,并开始寻找所有不同寄存器的结构。

// Interface.h

typedef enum Color{
    White,
    Black,
    Blue
};

typedef struct Register1{
    int Bit1:1;
    int Bit2:2;
    Color col;
} Register1;

// Interface.c

BuildSendMessage(Register1 temp)
{
    unsigned int iTemp;

    iTemp = temp.Bit1 << 7 + temp.Bit2 << 5 + temp.col; 
}

// sample.c

Register1 reg1;

reg1.Bit1 = 0;
reg1.Bit2 = 1;
reg1.col = White;

// Pass to function where message is built up

BuildSendMessage(reg1);

然后我在调用函数中填充结构,然后将结构传递给一个函数,在那里我进行所有的位移,将地址等附加到消息上并通过comm接口发送出来。

这可以改进吗?我应该隐藏更多信息并使用函数填充结构吗?我一直在做很多阅读,这绝对可以使用一些改进。

1 个答案:

答案 0 :(得分:0)

  

我想要做的是我有一个设备,我通过tcp与它交谈   有一份文件解释了每个注册的内容。

...

  

然后我在调用函数中填充结构,然后传递   结构成一个函数,我做所有的位移,附加   在消息上发送地址等,并通过通讯发送出去   接口

     

这可以改进,我应该隐藏更多信息吗?   一个函数填充结构?

来自Wikipedia

  

在计算机科学中,信息隐藏是原则   在计算机程序中隔离设计决策   最有可能改变,从而保护程序的其他部分   如果改变设计决策,则进行大量修改。该   保护涉及提供稳定的接口,以保护   来自实施的程序的其余部分(细节是   最有可能改变的。)

每个寄存器在设备中的作用不太可能改变,如果它最终应该改变,程序的其他部分可能还需要修改,所以没有必要“隐藏更多信息”。