gpt4 book ai didi

c - 如何在 ansi-c 中使用指向全局结构的指针?

转载 作者:太空狗 更新时间:2023-10-29 15:27:08 24 4
gpt4 key购买 nike

情况是这样的。在文件“fileA.c”中我有

typedef struct MY_STRUCT
{
int A;
int B;
int C;
}MY_STRUCT;

MY_STRUCT Data;

/* Function */
int function(MY_STRUCT *params)
{
int varA, varB, varC;

varA = params->A;
varB = params->B;
varC = params->C;
}

我需要从其他例程中填充结构元素,例如,包含以下内容的“fileB.c”:

extern MY_STRUCT Data;

int function(MY_STRUCT *params);

/* Function */
void userMain(void)
{
Data.A = 1254;
Data.B = 5426;
Data.C = 1236;

function(&Data);
}

但是我得到了错误:

“[错误] fileB.c E208:语法错误 - 标记“;”在“数据”之前插入

当我交叉检查错误时,编译器将我带到声明“extern MY_STRUCT Data;”

所以我的问题是如何实现此功能?我的意思是,如何从不同于我声明结构的文件的另一个文件中的另一个函数填充结构的元素?

最佳答案

当编译器编译 fileB.c 时,它不知道您在 fileA.c 中定义的 typedef .所以在 fileB.c 中,MY_STRUCT 是一个未知类型。

您应该将 typedef 移动到一个公共(public) header ,并将其包含在 fileA.c 和 fileB.c 中。

关于c - 如何在 ansi-c 中使用指向全局结构的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11957276/

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