将struct传递给另一个.c文件中的函数,但它不';t指向正确的结构

将struct传递给另一个.c文件中的函数,但它不';t指向正确的结构,c,file,struct,C,File,Struct,我试图将结构传递给函数,但传递结构的函数位于另一个.c文件中 当我运行debug时,另一个文件中的结构地址不同,因此变量不会在接收函数中更新。我这样做的原因是因为我的程序中有各种各样的菜单,我希望每个菜单都有一个单独的文件 内部defs.h文件 typedef struct{ byte min; byte max; }menuOptionValue_s; 内部菜单.h文件 void draw_menuOption(menuOptionValue_s

我试图将结构传递给函数,但传递结构的函数位于另一个.c文件中

当我运行debug时,另一个文件中的结构地址不同,因此变量不会在接收函数中更新。我这样做的原因是因为我的程序中有各种各样的菜单,我希望每个菜单都有一个单独的文件

内部defs.h文件

typedef struct{ 
    byte min;       
    byte max;       
}menuOptionValue_s;
内部菜单.h文件

void draw_menuOption(menuOptionValue_s);
内部菜单.c文件

#include "defs.h"
#include "menu.h"

void draw_menuOption(menuOptionValue_s menu){
     byte value = menu.max;
     draw(x,y,value);
}
内部设置.c文件

#include "defs.h"
#include "menu.h"
void setting_Init(void);
menuOptionValue_s setting;
menuOptionValue_s second_setting;

void setting_Init(void){
     setting.max = 10;
     setting.min = 1;
     second_setting.max = 20;
     second_setting.min = 11;
     draw_menuOption(setting);
     draw_menuOption(second_setting);
}
我希望能够从任何.c文件中调用draw\u menuOption(),并在这些.c文件中传递结构 我提供的代码大大缩减了,在main.c中调用了一次setting_Init(),draw_menu选项(setting)是从setting.c中的另一个函数中调用的。我只是想说明我实际上在调用它。

您正在按值传递对象。这意味着复制品已经制作好了

如果要影响原始对象,请传递引用或指针


这一主题应该在您的书的早期介绍。

菜单选项值
菜单选项值
?当然,结构地址是不同的。在按值传递结构时,有两个不同的结构对象(如果
menuOptionValue
是一个输入错误)。也许你应该传递一个指针?另一方面,如果您不想更改
draw\u menuOption
函数中的结构成员,这真的很重要吗?是的,我很抱歉,这是一个输入错误。我计划多次调用draw_menuOption(),每次调用1到5次,以从1到5行设置中进行绘制。我需要进行大量重写,但你很可能是对的,我会在清理完我的问题后马上回来。