1.編程接口是為某種邏輯編寫的某種標準數據格式。
是宿主程序用來與Lu通信的壹組C函數。所有的API函數都根據相關的類型和常量在頭文件lua.h中聲明。
2.雖然我們說的是“函數”,但是壹些簡單的API是以宏的形式提供的。?
除非特別說明,所有這些宏都只使用它們的參數壹次(除了第壹個參數必須是Lu狀態),所以妳不需要擔心這些宏的擴展帶來的壹些副作用。
3.C庫中的所有Lua API函數都不會檢查參數是否兼容和有效。
但是,您可以通過在編譯Lu時打開宏開關LUA _使用_APICHECK來改變這種行為。
Lu使用壹個虛擬棧與c交換值,棧上的每個元素都是壹個Lu值(nil,number,string等。).
4.每當Lua調用C時,被調用的函數都會獲得壹個新的堆棧。
這個棧獨立於C函數本身和之前的Lu棧。包含了Lu傳遞給c函數的所有參數,c函數把要返回的結果放在這個棧上返回給調用者。
5.為了方便起見,對棧的所有API查詢操作並不嚴格遵循棧的操作規則。?
取而代之的是,壹個索引可以用來指向棧上的任何元素:正的索引是指棧上的絕對位置(從1開始);負索引是指從堆棧頂部的偏移量。廣義來說,如果棧中有n個元素,那麽索引1表示第壹個元素(即壓入棧中的第壹個元素),索引n表示最後壹個元素;index -1也指最後壹個元素(即堆棧頂部的元素),index -n指第壹個元素。
4.2-堆棧大小
5.當您使用Lu API時,您有責任進行適當的調用。?特別是,控制不溢出堆棧是您的責任。