2011-10-14 116 views
0

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

在编译时,我得到的错误是: 1.表达式必须有一个恒定的值 2.不完全类型是不允许

两者都指出,当我尝试创建消息结构和传球的实例主结构的指针。

请帮忙。

[代码]

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 
         }; 

[/代码]

+0

这应该是什么语言? –

+0

对我来说看起来像C –

回答

0

我不是你说有,或你想做些什么的想法foggiest。但是:

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;(一个布尔值?)和零初始化其他成员。