Использовать структуру typedef в другом файле на C

Привет, я новичок в C.

Я хочу «экспортировать» и использовать структуру typedef в других файлах, но мне кажется, что она мало работает.

У меня такие ошибки

      unknown type name 'CAN_frame'
storage size of 'CAN_RxMessage' isn't known
invalid use of undefined type 'struct CAN_frame'

Вот мои файлы:

main.h

      #include "can.h"
typedef struct
{
    uint16_t STDID;  //ID
    uint8_t IDE;
    uint8_t RTR;     //Request frame ou data frame
    uint8_t DLC;     //Nombre d'octets de données utiles
    uint8_t data[8]; //Tableau de 8 octets de données
}CAN_frame;

can.h

      #include "main.h"

can.c

      #include "can.h"
CAN_frame CAN_RxMessage;

void reception_CAN(void)
{
    //CAN_RxMessage filled with data
}

Конечно, я также хочу использовать это CAN_RxMessage, заполненное данными в моем main.c (чтобы отправить его вместе с usart на мой компьютер).

Я попытался использовать extern, extern struct, struct и вручную определенные CAN_frame в моих can.c и can.h (но я думаю, что это будет только перегрузить или переопределить CAN_frame в моем main.c, поэтому это кажется бесполезным).

1 ответ

Вот.

can.h

      typedef struct _CAN_frame
{
    uint16_t STDID;  //ID
    uint8_t IDE;
    uint8_t RTR;     //Request frame ou data frame
    uint8_t DLC;     //Nombre d'octets de données utiles
    uint8_t data[8]; //Tableau de 8 octets de données
}CAN_frame;

can.c

      #include "can.h"

main.c

      #include "can.h"
CAN_frame CAN_RxMessage;

void reception_CAN(void)
{
    //CAN_RxMessage filled with data
}
Другие вопросы по тегам