我有一个变量,它是一个结构,在.c文件中定义:
struct {
int write_cursor;
int read_cursor;
message messages[10];
} out_messages = {0, 0};
要使其在其他文件中可用,我的.h文件包含:
extern struct {
int write_cursor;
int read_cursor;
message messages[10];
} out_messages;
这适用于Microchip C18编译器。 XC8编译器出错:
communications.c:24: error: type redeclared
communications.c:24: error: conflicting declarations for variable "out_messages" (communications.h:50)
答案 0 :(得分:3)
符号不正确,你可以这样做:
typedef struct {
int write_cursor;
int read_cursor;
message messages[10];
} Struct_out_messages;
extern Struct_out_messages out_messages;
并在.c中进行初始化。
Struct_out_messages out_messages = {0, 0, {0}};
这在XC16中编译没有任何问题,希望它也适用于XC8。
答案 1 :(得分:2)
如果您需要访问多个文件中struct
的内容,可以将头文件中的声明更改为:
struct out_messages_t {
int write_cursor;
int read_cursor;
message messages[10];
};
extern struct out_messages_t out_messages;
然后在你的.c文件中,定义并初始化:
struct out_messages_t out_messages = {0, 0};
(并包括标题)