在 C 中的另一个文件中使用 typedef struct
Use typedef struct in another file in 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发送到我的电脑)。
我尝试在我的 can.c 和 can.h 中使用 extern、extern struct、struct 和 manualy defined CAN_frame(但我认为它只会重载或重新定义 CAN_frame 在我的 main.c 所以它似乎没用)。
在这儿。
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
}
你好,我是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发送到我的电脑)。
我尝试在我的 can.c 和 can.h 中使用 extern、extern struct、struct 和 manualy defined CAN_frame(但我认为它只会重载或重新定义 CAN_frame 在我的 main.c 所以它似乎没用)。
在这儿。
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
}