我需要澄清有关使用结构和外部元素的信息。我的代码就是这样。
cfile.c
volatile struct my_struct{
char *buf;
int size;
int read;
int write;
}rx,tx;
void foo1()
{
rx.size = 256;
rx.buf = (char *)malloc(rx.size * sizeof(char));
rx.read = 0;
rx.write = 0;
tx.size = 256;
tx.buf = (char *)malloc(tx.size * sizeof(char));
tx.read = 0;
tx.write = 0;
}
xyzFile.c
//extern the structure
在此函数中使用结构变量
void foo2(void)
{
int next;
next = (rx.write + 1)%rx.size;
rx.buf[rx.write] = data;
if (next != rx.read)
rx.write = next;
}
在此函数foo中,我正在获取此数据rx.buf
,并希望在cfile.c
中使用此数据。我该怎么办?
先谢谢了。
答案 0 :(得分:2)
引入标题,例如myheader.h。
在内部声明数据类型并声明外部变量。
#ifndef MYHEADER_H
#define MYHEADER_H
struct my_struct{
char *buf;
int size;
int read;
int write;
};
extern struct my_struct rx;
extern struct my_struct tx;
#endif
两个/所有代码文件中都包含标头
#include "myheader.h"
不要忘记仍然在代码文件之一中定义变量,
但不要使用显示的代码中类型声明和变量定义的“简写”组合。
只需使用标头中声明的类型,请注意缺少extern
。
即将其替换为cfile.c
volatile struct my_struct{
char *buf;
int size;
int read;
int write;
}rx,tx;
通过此操作,但仅在此一个.c文件中。
struct my_struct rx;
struct my_struct tx;