В настоящее время я работаю над проектом, в котором я написал значительную часть в C, а кто-то еще написал большую часть в Python. Нам нужно связать их вместе, но я не могу понять, как обращаться с моими переменными, чтобы они могли быть переданы на сторону Python. Часть Python будет основным «родителем», поэтому потребуется иметь возможность вызывать функции в моем коде C для получения и изменения моих переменных.
В настоящее время я настраиваю структуры в начале мой файл, а затем определение структур в моей функции init()
. Затем я передаю эти структуры, содержащие некоторые из моих переменных между функциями, для облегчения передачи переменных (я использую GTK, поэтому использовал структуры для передачи нескольких переменных в мои обратные вызовы).
Так что, если у меня есть переменная с именем variableA
определенная в глобальной структуре с экземпляром, который затем определен в моей функции init()
, которая уже используется программой, мне нужен код Python, чтобы иметь возможность вызывать такую функцию, как get_variable_a()
, и иметь функцию return текущее значение variableA
, однако, поскольку эта функция будет вызываться только внешним кодом Python, но не функцией init()
, я, очевидно, не могу передать свою структуру в нее при запуске.
Я стараюсь максимально избегать глобальных переменных, но в настоящее время изо всех сил пытаюсь найти способ обойти это. Извините, я довольно новичок в C, поэтому все еще начинаю с ним разбираться.
Пример грубого кода, чтобы помочь продемонстрировать, что я имею в виду:
struct vars {
char* variableA[10][10];
int variableB;
}
char* get_variable_a() {
// This function is called externally by the Python code
// RETURN THE VALUE OF VARIABLE A FROM BELOW
}
void example_function(struct vars *myVars) {
myVars->variableA[0][0] = "test";
}
void init() {
struct vars *myVars = g_new0(struct vars, 1);
example_function(myVars);
}
int main() {
init();
}
Мне также нужно быть в состоянии заставить функцию возвращать двумерный массив и в настоящее время пытаюсь получить C, позвольте мне сделать это.
Любая помощь будет принята с благодарностью, спасибо.