프로그래밍
[Lua] C API 레퍼런스 읽기
푸불
2022. 2. 15. 04:41
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이 한개 있다. 주의하자
둘다 에러를 발생시키기 때문에 이걸 핸들링할수있다.
이렇게 스택 푸쉬 팝이 얼마나 되는지가 정말 중요한게,
이 함수를 호출했으니 원소가 빠졌겠지 했는데 안빠져서 프로그램이 터질수가 있다
주의하자...