Sprawdzenie w C, czy tablica Lua posiada dany klucz

Jak to zrobić?
Jeżeli klucz nie istnieje w danej tablcy, to tandardowe polecenie

lua_getfield(L, -1, "name_of_key") 

zwraca

PANIC: unprotected error in call to Lua API (attempt to index a nil value)
Przerwane (zrzut pamięci)

Czy jest jakiś sposób obsłużenia tego wyjątku, albo sprawdzenie czy dany klucz ma wartość nil?

Ten błąd nie oznacza, że tablica nie ma wartości pod danym kluczem (czyli ma nil), ale że chciałeś sprawdzić pole nie tablicy a właśnie nil. W Lua wyglądałoby to tak:

> local t = nil
> local k = 'name_of_key'
> t[k]
stdin:1: attempt to index a nil value (global 't')
stack traceback:
	stdin:1: in main chunk
	[C]: in ?

Co do samego łapania błędów: lua_pcall i lua_pcallk.

Kurczę, ale gdybym chciał sprawdzić pole nil, to takie polecenie w przypadku, gdy tablica jednak ma klucz, też powinno rzucić błędem, prawda?
No bo mam taki kod:

lua_getglobal(L, "TOPLOT");
lua_getfield(L, -1, "step") != LUA_TNUMBER

i plik konfiguracyjny Lua:

local  function  myfunction (x)
    return  x*x
end

TOPLOT = {['function']= myfunction , minx=-10, maxx=10, step =0.2}

Teraz chciałbym obsłużyć w jakiś sposób przypadek, gdy step nie jest podany w tej tablicy. Normalnie wszystko działa, ale gdy pole step nie istnieje, to lua_getfield rzuca tym właśnie błędem.

Nie, nie sprawdzasz pola nil, tylko pole step. Kod, który napisałeś jest poprawny, o ile istnieje global TOPLOT - błąd wskazuje że tak nie jest, bo lua_getfield Ci rzuca błędem, że próbujesz indeksować nil a nie tablicę. Dodaj lua_istable(L, -1) (i odpowiednio obsłuż) za lua_getglobal, żeby mieć pewność, że taki jest.

Mam tak, zrobiłem skrót kodu dla czytelności.
Możesz zobaczyć pełny kod tutaj: