从master struct获取变量

时间:2011-10-14 21:17:23

标签: pointers struct

我正在尝试创建要在两台主机之间传输的不同消息。我遵循的程序结构是创建一个主结构,其中声明了在不同消息中传递的所有变量。   然后我使用master struct中的相同变量为不同的消息创建了不同的结构,我试图传递的值是通过指针。        以下是我想要做的大致概述。我不知道这是正确的方法,还是有另一种更好的方法。

我在编译时遇到的错误是: 1.表达式必须具有恒定值 2.不允许不完整类型

当我尝试创建消息结构的实例并传递master struct的指针时,两者都是指向的。

请帮忙。

[代码]

struct Master{

char  Bulk_Charging_Complete : 1;
char  Charging_Complete : 1;
short Vehicle_Energy_Capacity;
char  Vehicle_RESS_SOC;
short Vehicle_Maximum_Power_Limit : 13;
short Vehicle_Maximum_Current_Limit: 13;
short Vehicle_Maximum_Voltage_Limit: 13;
short Charger_Maximum_Power_Limit: 13;
short Charger_Maximum_Current_Limit: 13;
short Charger_Maximum_Voltage_Limit: 14;
short Charge_Current_Request: 13;
} Power;


/* create a pointer of type Master struct and point to instance of that struct type,i.e Power */


struct Master *power_pointer = &Power;    


// creating a structure of a message, the value to its variables will be fetched by pointer to the master structure

struct {
short var1 : 1;
char var2 : 4;
short var3 : 1;
short var4 : 4;  
}EV_msg_01;

// creating a structure of a message, the value to its variables will be fetched by pointer to the master structure

struct {
short var1 : 1;
short var2 : 4;
short var3 : 1;
short var4 : 4;  
}station_msg_01;



struct EV_msg  EV_msg_01 = {
                      power_pointer->Vehicle_Energy_Capacity,power_pointer->Vehicle_RESS_SOC,power_pointer->Vehicle_Maximum_Power_Limit,power_pointer->Vehicle_Maximum_Current_Limit
                      };


struct station_msg_01 station_msg_01 = {
                      power_pointer->Charger_Maximum_Power_Limit, power_pointer->Charger_Maximum_Current_Limit,power_pointer->Charger_Maximum_Voltage_Limit,power_pointer->Charge_Current_Request
                      };

[/代码]

1 个答案:

答案 0 :(得分:0)

我对你在那里所说的话,或者你想要做的事情都没有最模糊的想法。但是:

struct {
short var1 : 1;
char var2 : 4;
short var3 : 1;
short var4 : 4;  
}EV_msg_01;

创建一个名为EV_msg_01的匿名类型的变量。

struct EV_msg  EV_msg_01 = {

EV_msg未在任何地方定义,变量EV_msg_01已经存在,它在第一部分中定义。

struct station_msg_01 station_msg_01 = {

station_msg_01是一个已经声明的变量,而不是一个类型。并且您不能拥有与类型同名的变量。

EV_msg_01 = { power_pointer->Vehicle_Energy_Capacity, }

我不知道你的意图,但是该作业试图将Vehicle_Energy_Capacity(简短)分配给short : 1;(一个博尔?)并将零初始化为其他成员。

相关问题