这是关于C语言的问题:如何实现跨文件调用结构体变量.

2024年12月03日 08:37
有4个网友回答
网友(1):

写个头文件 c.h 声明 一个结构体类型
struct STU
{
int x;
int y;
};

定义结构体变量s的文件b.c
#include "c.h"
struct STU s; /* 不加extern ,默认认为extern */

a.c 调用b.c里定义的全局变量s
#include
#include "c.h" /* struct STU这个类型的定义(或者说声明)在这个头文件里 */
extern struct STU s;/* 声明它是外部的类型是struct STU */
int main()
{
printf("s.x+s.y = %d+%d = %d\n",s.x,s.y,s.x+s.y);/*调用了*/
}

网友(2):

建立cpp文件(A.cpp)
编译源文件,然后建立两个头文件(A.h和B.h),都要添加到工程A中去

在B.h中添加如下代码
typedef struct _P_Point
{
int x;
int y;
}POINT, PPoint;

A.h中添加如下代码
#include "B.h"
// 注意这里的头文件引用要用""
void showInfo(POINT pt);

A.cpp文件中添加如下代码
#include
#include "A.h"

int main(void)
{
POINT pt;
pt.x = 10;
pt.y = 20;

showInfo(pt);

return 0;
}

void showInfo(POINT pt)
{
printf("point = (%d, %d)\n", pt.x, pt.y);

return ;
}

重新编译运行得到结果为
#include
#include "A.h"

int main(void)
{
POINT pt;
pt.x = 10;
pt.y = 20;

showInfo(pt);

return 0;
}

void showInfo(POINT pt)
{
printf("point = (%d, %d)\n", pt.x, pt.y);

return ;
}

/*
VC 6.0

point = (10, 20)
Press any key to continue
*/

网友(3):

使用外部定义变量,如
extern strucr bingzhong
{
int sudu ;//速度
int shengming;//生命
int gongji;//攻击
int fangyu;//防御
}bz[20];
上面的代码写在不是主函数所在的文件里,头文件也可以使.c,但不能有主函数

网友(4):

将结构体变量写在头文件中,然后包含该头文件