본문 바로가기

프로그래밍

[Lua] C API 레퍼런스 읽기

https://www.lua.org/manual/5.3/manual.html

 

기본 원리는 지난글에서 설명했다.

그럼 이번엔 실제 API를 좀 읽어보도록 하자

 

레퍼런스 오른쪽엔 다음과같은표시가 있다. 각 필드는 팝, 푸쉬, 에러 여부다

lua_pop은 위와 같은 표시가 붙어있는데, n개를 스택에서 팝하는 함수라서 그렇다. 반대로 +0이라 푸쉬는 아예없다.

 

lua_tonumber을 보자.

이번엔 푸쉬도 팝도 없다.

즉, 단순 tonumber같은거로 값을 가져온다고 값이 사라지진 않는것이다

지난글에선 그림에서 잘못표시했었다

걍 tonumber하면 여전히 스택에 함수 반환값등으로 생긴 값이 남아있으니까,

팝을 적절히 잘 해주도록하자.

 

말그대로 top을 가져온다. 정확히는 top의 인덱스를 가져오기 때문에, 사실상 현재 스택에 든 원소의 개수라고 보면 된다.

lua_getglobal과 lua_setglobal은 각각 push, pop이 한개 있다. 주의하자

둘다 에러를 발생시키기 때문에 이걸 핸들링할수있다.

 

 

이렇게 스택 푸쉬 팝이 얼마나 되는지가 정말 중요한게,

이 함수를 호출했으니 원소가 빠졌겠지 했는데 안빠져서 프로그램이 터질수가 있다

주의하자...