Есть ли такая функция, как Tcl_LinkVar в guile, чтобы напрямую связать переменную C с переменной guile?
Tcl_LinkVar
может связать переменную C с переменной Tcl напрямую. Когда переменная в C изменяется, переменная Tcl изменяется соответственно. Это очень удобно.
Пример:
Tcl_LinkVar(interp, "player_x", (char *) &player.world_x, TCL_LINK_DOUBLE);
Мне интересно, поддерживает ли Guile подобную функцию? Или когда переменная изменится, я должен каждый раз передавать значение переменной в схеме.
1 ответ
Не могли бы вы получить указатель на переменную c через ffi?, Аналогично тому, как вы делаете с функциями.
Возможно, ffi этого не поддерживает, но я знаю, что вы можете получить доступ к указателям на переменные по имени, используя что-то вроде функции dlsym в libtool (которая также используется для получения указателей на функции). Я бы предположил, что ffi guile использует нечто похожее внизу.