В принципе, я не знаю, как сделать что-то подобное:
lua_pushcfunction(L, int func(lua_State* L) { printf("hello"); return 0; });
Я пробовал много вещей, но не работает
Два способа:
Определите функцию, затем нажмите ее.
int func(lua_State* L) { printf("hello"); return 0; }; // later... lua_pushcfunction(L, func);
Это единственный способ сделать это в C или до C ++ 11.
Используйте лямбда-выражение (он же анонимная функция):
lua_pushcfunction(L, [](lua_State* L) -> int { printf("hello"); return 0; });