Я не имею ни малейшего представления о том, что вы там сказали или что вы пытаетесь сделать. Но:
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;
(bool?), И ноль инициализирует других членов.