【发布时间】:2012-12-12 07:10:57
【问题描述】:
有一个名为“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”文件中给出了错误的值。 请帮我弄清楚。
【问题讨论】:
-
你使用的是哪个编译器??
-
那么你需要在这里写一个SSCCE。我们真的无法猜测出了什么问题。
-
@JoachimPileborg:他可能正在使用一个通过“通用”方法授予许可的系统,但它并不严格符合标准。 (ISO/IEC 9899:2011, Annex J, §J.5.11 多个外部定义 对象标识符可能有多个外部定义,有或没有关键字 extern 的显式使用;如果定义不一致,或者初始化了多个,则行为未定义 (6.9.2)。) 这是一种扩展——不是标准,但被标准认可。跨度>
-
请参阅What are
externvariables in C,详细了解如何执行所有这些操作。 -
你能展示分配和使用变量的代码吗?如果您使用带有
y的字符串函数,您是否正确地以空值终止它?
标签: c file struct user-defined-types