该死的结构体,折腾了哥快两小时!!!在此总结一下。
假设a.h文件定义结构体:
struct test
{
int a;
int b;
};
那么要在b.c文件中调用该怎么写呢?
需要两步:
1、头文件包含
#include "a.h"
2、先定义一个结构体变量(注意是定义,不是声明)
struct test c;
2、在b.c文件中声明要调用的结构体变量(注意是声明,声明为全局变量)
extern struct test c;
3、然后就可以给结构体成员赋值
/*成员赋值*/
c.a = 1;
c.b = 2;
当然,如果变量定义为结构体指针变量,则变成如下:
/*定义*/
struct test *c;
/*声明*/
extern struct test *c;
/*成员赋值*/
c->a = 1;
c->b = 2;
另外还有另一个变种,使用typedef 定义结构体
typedef struct test
{
int a;
int b;
}result;
/*定义*/
result c;
/*声明*/
extern result c;
/*成员赋值*/
c.a = 1;
c.b = 2;
result是一个结构体类型,不是结构体变量,定义变量like this :result y0,y1;y0、y1才属于结构体变量。实际上 result = struct test