gpt4 book ai didi

c - 用户定义的全局变量在 C 中的两个不同文件中给出不同的值

转载 作者:行者123 更新时间:2023-11-30 18:59:07 24 4
gpt4 key购买 nike

有一个名为“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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com