Передача структуры в функцию внутри другого файла .c, но она не указывает на правильную структуру - PullRequest
1 голос
/ 09 июня 2019

Я пытаюсь передать структуру функции, но функция, которой я передаю структуру, находится внутри другого файла .c.

Когда я запускаю debug, адрес структуры в другом файле отличается, поэтому переменные не обновляются в принимающей функции. Причина, по которой я делаю это, заключается в том, что в моей программе есть различные меню, и я хочу иметь отдельный файл для каждого меню.

внутри файла 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);
}

Я хочу иметь возможность вызывать draw_menuOption () из любого файла .c и передавать структуры в эти файлы .c Код, который я предоставил, значительно сжался, setting_Init () вызывается один раз в main.c, а draw_menuOption (setting) вызывается из другой функции внутри setting.c, я просто хотел показать, что я на самом деле вызываю его.

1 Ответ

2 голосов
/ 09 июня 2019

Вы передаете объект по значению .Это означает, что копия сделана.

Передайте ссылку или указатель, если вы хотите повлиять на исходный объект.

Эта тема должна быть рассмотрена в начале вашей книги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...