У меня проблема, которая, я полагаю, должна быть очень распространенной, и большинство из вас столкнулось бы с ней. Я написал программу в lua, скажем main.lua, которая при получении ключевого события должна изменить координаты и отобразить геометрическую фигуру. Этот код lua вызывает reg.c, где это вид регистров. Теперь в reg.c у меня есть механизм функций, который получает нажатую клавишу и передает ее функции lua, отвечающей за управление ключами. Но к моменту появления ключевого события код lua выполняется с регистрацией и завершением, поэтому вызов от engine() становится незаконным доступом к памяти, что приводит к ошибке сегментации.Поток управления в Lua
Кроме того, предположим, что мы не можем подключить lua в функции reg и вызвать функцию двигателя из другого места.
Тогда что должно быть решением, пожалуйста, помогите мне в этом.
@jacob: вот прообраз того, что я пытаюсь достичь:
function key_handler() //this function will get the latest key pressed from some other function
{
draw.image();
draw.geometry();
...
...
while(1)
{
//draw Points until some condition goes wrong
}
}
Теперь, когда вступил в key_handler, в то время как он занят рисование точек, если и до тех пор, пока происходит неуспешное условие , я не могу получить нажатие клавиши до этого времени.
Надеюсь, это объяснение намного проще и поставило мою точку зрения и поможет другим понять проблему. Мне очень жаль, но я не умею выражать или заставлять других понимать. более
Одна вещь, я ahve следовал синтаксису C, чтобы объяснить, однако это полностью реализован в Lua
Трудно видеть вашу установку и то, что вы пытаетесь выполнить из своего вопроса (например, никто не знает, что делает или должен делать 'reg.c', то же самое для' engine() '). Пожалуйста, уточните и дайте минимальный образец кода, чтобы продемонстрировать, что не работает. – jpjacobs
@jpjacobs: Я обновил проблему до лучших своих усилий, любезно посмотрю, можете ли вы порекомендовать мне какое-либо решение проблемы – ashutosh
Я пробовал использовать сопрограммы, но это не помогло – ashutosh