Lua C API: указатели Pu sh в качестве пользовательских данных - PullRequest
2 голосов
/ 04 апреля 2020

У меня есть адрес указателя, который указывает на данные пользователя. Я получил адрес следующим образом:

*(uint32_t*)lua_touserdata(L, -1)

Позже я хочу вернуть эти sh данные пользователя обратно в стек с помощью указателя. Если это возможно, что должно быть сделано?

1 Ответ

2 голосов
/ 05 апреля 2020

Вы можете создать новые пользовательские данные после получения указателя на тот, который вы уже создали с помощью lua_newuserdata (). Затем установите базовое значение указателя на значение базового значения первых пользовательских данных. Это должно выглядеть примерно так:

int *ud1 = lua_touserdata( L, -1 ); // Get userdata previously created

int *ud2 = lua_newuserdata( L, sizeof( int ) ); // Create new userdata
*ud2 = *ud1; // Set value of new userdata to the value of the previous userdata

// Userdata has been successfully "pushed"
assert(
        *( (int*) lua_touserdata( L, -1 ) ) == 
        *( (int*) lua_touserdata( L, -2 ) ) 
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...