我正在尝试将结构传递给函数,但我将结构传递给的函数位于另一个 .c 文件中。
当我运行调试时,另一个文件中的结构地址不同,因此变量不会在接收函数中更新。我这样做的原因是因为我的程序中有各种菜单,我想为每个菜单创建一个单独的文件。
在 defs.h 文件中
typedef struct{
byte min;
byte max;
}menuOptionValue_s;
在 menu.h 文件中
void draw_menuOption(menuOptionValue_s);
在 menu.c 文件中
#include "defs.h"
#include "menu.h"
void draw_menuOption(menuOptionValue_s menu){
byte value = menu.max;
draw(x,y,value);
}
在 settings.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_menuOption() 并在这些 .c 文件中传递结构 我提供的代码明显缩小了, setting_Init() 在 main.c 中调用了一次, draw_menuOption(setting) 从 setting.c 中的不同函数中调用,我只是想表明我实际上是在调用它。
最佳答案
您正在按值 传递对象。这意味着制作了一个副本。
如果您想影响原始对象,请传递一个引用或指针。
该主题应该在您的书中尽早涵盖。
关于c - 将结构传递给另一个 .c 文件中的函数,但它不指向正确的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56510286/