Ansi-C C99 Интерфейс со структурой
В качестве компилятора я использую Labwindows CVI от National Instruments.
Я должен был создать интерфейс для устройства и начать поиск структур для всех различных регистров.
// 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);
Затем я заполняю структуру в вызывающей функции, а затем передаю структуру в функцию, где я делаю все битовые сдвиги, добавляю адрес и т. Д. К сообщению и отправляю его через интерфейс связи.
Можно ли это улучшить, и я должен делать больше сокрытия информации и иметь функцию, заполняющую структуру? Я много читал, и это определенно могло бы принести некоторые улучшения.
1 ответ
То, что я пытаюсь сделать, - это то, что у меня есть устройство, с которым я общаюсь по протоколу TCP, у него есть документ, объясняющий, что делает каждый регистр.
...
Затем я заполняю структуру в вызывающей функции, а затем передаю структуру в функцию, где я делаю все битовые сдвиги, добавляю адрес и т. Д. К сообщению и отправляю его через интерфейс связи.
Можно ли это улучшить, и я должен делать больше сокрытия информации и иметь функцию, заполняющую структуру?
Из Википедии:
В компьютерных науках сокрытие информации - это принцип разделения проектных решений в компьютерной программе, которые с наибольшей вероятностью могут измениться, тем самым защищая другие части программы от обширной модификации в случае изменения проектного решения. Защита включает обеспечение стабильного интерфейса, который защищает оставшуюся часть программы от реализации (детали, которые могут измениться).
То, что делает каждый регистр в устройстве, вряд ли изменится, и, если это в конечном итоге должно измениться, другие части программы, вероятно, все равно будут нуждаться в модификации, поэтому нет смысла делать "скрытие большей информации".