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

标签 c file struct user-defined-types

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

相关文章:

c - 存储在堆栈和堆上的对象指针之间有区别吗?

c - 在单独的行上打印 10 范围内的素数

c - 从文件中读取最后 N 行

c - 带 realloc 的参差不齐的 *char 二维数组

c - 为什么在函数中将 char 数组作为参数传递并尝试在函数内部进行修改会显示段错误?

java - 动态更改Windows保存目录?

c - 文件描述符(在 C 中打开的 fd)是否与其进程 ID 相同?

c - 在 c 中的结构成员中间调用 free 时会发生什么?

c# - 结构类型数组的性能

c - 结构体 : dereferencing pointer to incomplete type 中的枚举