有一个名为“AAA.h”的头文件。在此头文件中,我们定义了一个名为 lrd
的结构,如下所示:
struct lrd
{
int tc;
char ptc[5];
char stc[5];
char ath[5];
int vc;
};
struct lrd lr;
此头文件“AAA.h”包含在两个不同的文件名称“BBB.c”和“CCC.c”中。我们在“BBB.c”文件中为结构变量lr
分配了值,如下所示:
lr.tc=tc;
memcpy(lr.ptc,ptc,sizeof(ptc));
memcpy(lr.stc,stc,sizeof(stc));
memcpy(lr.ath,ath,sizeof(ath));
lr.vc=vc;
以上源变量从数据库中获取值。我们在“CCC.c”文件中使用结构变量lr
。我们使用结构体 lrd 变量,如下所示:
char *ptc()
{
sprintf(str, "lr.ptc(%s)", lr.ptc);
trace(str);
return lr.ptc;
}
char *stc()
{
sprintf(str, "lr.stc(%s)", lr.stc);
trace(str);
return lr.stc;
}
变量 stc 在“CCC.c”文件中给出了错误的值。 请帮我弄清楚。
最佳答案
看看benjarobin
怎么说。我只是向您展示一个小足迹
AAA.h
#ifndef _AAA_H
struct abc
{
int x;
char *y;
char *Z;
};
extern struct abc p;
extern void assign(void);
extern void display (void);
#endif
CCC.c
#include <stdio.h>
#include "AAA.h"
struct abc p; // Deceleration of p
void assign ()
{
p.x=20;
p.y="abcd";
p.Z="xyz0";
return;
}
BBB.c
#include <stdio.h>
#include "AAA.h"
void display (void)
{
printf("x = %d, y =%s, z=%s",p.x,p.y,p.Z);
}
DDD.c 包含主函数
。
#include <stdio.h>
#include "AAA.h"
void main ()
{
printf("\n\nAssigning Values\n\n");
assign ();
printf("\n\nIN BBB.c\n\n");
display ();
printf("\n\nIN MAIN\n\n");
printf("x = %d, y =%s, z=%s",p.x,p.y,p.Z);
}
输出为
Assigning Values
IN BBB.c
x = 20, y =abcd, z=xyz0
IN MAIN
x = 20, y =abcd, z=xyz0
关于c - 用户定义的全局变量在 C 中的两个不同文件中给出不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13834623/