Я пытался выделить память для указателя структуры. Вот сокращенный код - не могли бы вы сказать, что я сделал не так?
can.h
#ifndef CAN_H_
#define CAN_H_
typedef struct {
u32 id;
u32 mask;
char length;
char data[8];
char status;
} CAN_PACKET;
project.c
#include "can.h"
CAN_PACKET *packet_Tx, *packet_Rx;
CAN_PACKET packet1, packet2;
packet_Tx = (CAN_PACKET*)malloc(sizeof(CAN_PACKET)); /* line 20 in text */
packet_Tx = &packet1; packet_Rx = &packet2;
int main(void)
{
while(1)
{
}
}
Я получаю эти ошибки / предупреждения:
Предупреждение 1 Определение данных не имеет типа или класса хранения c: \ users \ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5.c 20 2 Can5
Предупреждение 2 типа по умолчанию имеет значение 'int' в объявлении 'packet_Tx' c: \ users \ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5.c 20 2 Can5
Ошибка 3 конфликтующих типов для 'packet_Tx' c: \ users \ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5.c 20 2 Can5
Ошибка 4: предыдущее объявление 'packet_Tx' было здесь c: \ users \ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5.c 18 13 Can5
Предупреждение: 5 инициализация делает целое число из указателя без приведения c: \ users \ blu \ documents \ avrstudio \ Can5 \ Can5 \ Can5.c 20 14 Can5
Остальная часть кода соответствует, когда строки назначения packet_Tx закомментированы. Большое спасибо, ребята.